relative Datei Angabe funktioniert nicht
-
Hallo ich bräuchte mal wieder Hilfe.
Ich lesen aus einer Excel Datei einen Wert aus, das klappt auch alles recht gut.
Doch wenn ich die die Datai öffnen will mit :excel.Workbooks.Open("dBEL.xlsx")
kommt immer der Fehler das die Datei nicht gefunden werden kann, obwohl die Datei mit ins Debug Verzeichnis kopiert wird.
Es funktioniert nur wenn ich denn kompletten Pfad angeben.
Ich möchte es aber auch auf anderen System verwenden.
Wie kann ich die Datei angeben, dass sich diese im Programmverzeichniss befindet.
Bei einer TXT reicht es wenn man "TextFile.txt" angibt dann nimmt er sie aus dem Programmordner.
-
Dann ist wahrscheinlich dein Arbeitsverzeichnis (Working Directory) verstellt.
Nimm einfach
Path.Combine(Application.StartupPath, "dBEL.xlsx")
-
also ich habe es ausprobiert und er sagt mir das ein Objekt verweis fehlt.
-
Dann zeig mal den code mit dem du es probiert hast.
-
Das ist der Code.
[/code]
private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application excel = null;
Workbook wb = null;// Excel starten
excel = new Microsoft.Office.Interop.Excel.Application();
excel.Visible = false;// Datei öffnen
wb = excel.Workbooks.Open (@"H:\Programme\C#\Text_Datei_Lesen\Text_Datei_Lesen\dBEL.xlsx", ExcelKonstanten.UpdateLinks.DontUpdate,
ExcelKonstanten.ReadOnly,
ExcelKonstanten.Format.Nothing,
"", // Passwort
"", // WriteResPasswort
ExcelKonstanten.IgnoreReadOnlyRecommended,
XlPlatform.xlWindows,
"", // Trennzeichen
ExcelKonstanten.Editable,
ExcelKonstanten.DontNotifiy,
ExcelKonstanten.Converter.Default,
ExcelKonstanten.DontAddToMru,
ExcelKonstanten.Local,
ExcelKonstanten.CorruptLoad.NormalLoad);code="cs"]
-
Und du hast es mit
string path=Path.Combine(Application.StartupPath, "dBEL.xlsx"); excel.Workbooks.Open (path, //...
versucht ? Oder wie hast du das mit dem relativen Pfad aufgesetzt ?
-
Ja klar ist C#
Wenn ich es so schreibe
string path=Path.Combine(Application.StartupPath, "dBEL.xlsx");
gibt er denn Fehler:
Fehler 1 "Application" ist ein mehrdeutiger Verweis und kann "System.Windows.Forms.Application" oder "Microsoft.Office.Interop.Excel.Application" sein. H:\Programme\C#\Text_Datei_Lesen\Text_Datei_Lesen\Form1.cs 32 36 Text_Datei_LesenUnd wenn ich es eindeutig zu weise zur "Microsoft.Office.Interop.Excel.Application" mit :
string path = Path.Combine**(_Application**.StartupPath, "dBEL.xlsx");
kommt der Fehler:
Fehler 1 Für das nicht statische Feld, die Methode oder die Eigenschaft "Microsoft.Office.Interop.Excel._Application.StartupPath.get" ist ein Objektverweis erforderlich. H:\Programme\C#\Text_Datei_Lesen\Text_Datei_Lesen\Form1.cs 32 36 Text_Datei_Lesen
-
Geht's damit?
string file = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\dBEL.xlsx";
-
Zu dem mehrdeutigen Verweise: Sprich die Klasse mal mit vollem Namen an, d.h. statt nur "Application" halt "System.Windows.Forms.Application".
Du musst diese nehmen, nicht die von Excel.
-
Sorry, daß es auch (noch) eine andere gleichnamige Klasse (außer unter System.Windows.Forms bzw. bei WPF) gibt, wußte ich nicht...
-
DarkShadow44 schrieb:
Zu dem mehrdeutigen Verweise: Sprich die Klasse mal mit vollem Namen an, d.h. statt nur "Application" halt "System.Windows.Forms.Application".
Du musst diese nehmen, nicht die von Excel.Ja stimmt.
Aber jetzt klappe es danke euch
-
Noch eine andere Frage vieleicht könnt ihr mir auch dabei Helfen.
Ich lese aus einer Excel Datei ein Datenbereich von z.b. 6 Zellen aus.
habe das mit
Range range = (Range)ws.get_Range("Range6Z");
nun möchte ich den Bereich in einer Textbox darstellen.
Wenn ich das direkt zuweise kriege ich System.Object[,]
als Textausgabe.
Ich deken mann müsste die Zellen separieren können und über eine Schleife vieleicht Ausgeben.