Hallo,
versuche schon seit Stunden ein Excel-File (Excel 2003) zu öffnen. Leider bleibt das Programm im Debugmodus bei der Open-Methode hängen. Der Compiler bringt eine COMException mit der Meldung: "Old format or invalid type library. (Exception from HRESULT:0x80028018(TYPE_E_INVDATAREAD))"
Ich habe die Office.Interop.Excel eingebunden. Hier mal der Quelltext:
using System;
using System.Reflection;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;
namespace WindowsForms_Excel
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// Excel-Instanz erzeugen und sichtbar schalten
Excel.Application excelBlatt = new Excel.Application();
excelBlatt.Visible = true;
string fileName;
object refmiss = Missing.Value;
OpenFileDialog opf_dlg = new OpenFileDialog();
DialogResult dlg = opf_dlg.ShowDialog();
// fileName = opf_dlg.FileName;
// für Test
fileName = Path.Combine(Application.StartupPath, "Exceltest.xls");
Excel.Workbook workbook;
// Excel-File öffnen
try
{
workbook = excelBlatt.Workbooks.Open(fileName,refmiss, refmiss, refmiss, refmiss, refmiss, refmiss, refmiss, refmiss, refmiss, refmiss, refmiss, refmiss, refmiss, refmiss);
}
catch (System.Runtime.InteropServices.COMException ce)
{
MessageBox.Show("Fehler beim Öffnen", ce.Message);
}
Hat da jemand eine Idee? Was besagt eigentlich der Fehlercode HRESULT genau? Gibts da eine Aufschlüsselung?
Ich habe auch schon die Interop.Excel 11.0 gegen die 12.0 getauscht.
Danke für den Tipp. Habe zwar noch rumgefummelt, es liegt aber nun daran das Excel bei mir in Englisch installiert ist, und ich somit zuerst de CultureUI("en-US") setzen mußte.
ich habe glaube ich genau das selbe problem.
Bei mir ist allerdings alles auf Englisch. BS/Office/Visiual Studio. Wirklich alles!
Ich bekomm es aber trotzdem nicht hin...
try
{
// Start Excel and get Application Object
object m = System.Reflection.Missing.Value;
Excel.Application oXL = new Excel.Application();
oXL.Visible = true;
oXL.UserControl = true;
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
oXL.GetType().InvokeMember("Add", System.Reflection.BindingFlags.InvokeMethod, null, oXL, null, ci);
Excel.Workbook oWB = oXL.Workbooks.Open(path,m,m,m,m,m,m,m,m,m,m,m,m,m,m);
}
catch
{
MessageBox.Show("Your current Microsoft Windows regional " +
"settings do not match the settings required by the macros " +
"in this document. Macros in this document might not run or " +
"might return incorrect data. Do not change your " +
"regional settings. WAS ZUTUNT IST !!!!");
}
habt ihr evtl. eine Idee?
ok. ich habs, waren zwei Fehler drin, der eine ging mit dem Code wie beschrieben. Aber der andere habe ich nicht auf anhieb gefunden. Vll. einfach mal wieder zu frueh gefragt 😉