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_Lesen

    Und 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.


Anmelden zum Antworten