Ich will mit einer If Anweisung schaun ob eine Datei da ist oder nicht zurzeit habe ich das nur mit laufwerks angabe. Ich möchte aber das meine Datei dort gespeichert wird wo die .exe des Projekts ausgeführt wird.
Habe es versucht ohne Laufwerksbuchstabe hat leider nicht geklappt, wäre für hilfe sehr dankbar.
string path = @"C:\BMI-Werte.xls";
if (File.Exists(path)
{
}
else
{
}
worksheet.SaveAs(@"C:\BMI-Werte.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing);
Hallo Arthuro!
Im Openbook wird meist Application.StartupPath benutzt.
Ich persönliche schreibe einfach nur die Datei ohne Pfadangabe, was jedoch nicht ganz so sauber ist denk ich, zumindest hat es bei mir schon mal zu Komplikationen geführt.
Ich denke StartupPath dürfte da nicht ganz so falsch sein, wenn es auch im Galileo Openbook steht. 😁
Mfg Preli
AppExcel.Workbooks.Open(System.Windows.Forms.Application.StartupPath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
Leider klappt das mit Application.StartupPath nicht, aber damit wäre mein Problem mit der IF-Anweisung ja auch net geklärt wie ich das überprüfe ich will ja nicht schaun ob eine datei in dem Path ist sonder ich möchte ja das Überprüft wird ob die Datei vorhanden ist.
Also ich habe es mit Application.StartUp versucht er speichert mir die Datei aber leider nicht da wo die .exe ist. Wenn ich Debuge Speichert er es mir im Bin Ordner und net im Debug ordner wo die .exe liegt. Habe die Datei nun aufm Desktop kopiert und versucht jetzt hat er das wieder im Bin Ordner kopiert. Also mit Application.StartUp funktioniert das leider nicht....
😦
Ich weiß zwar nicht genau was du falsch machst, bzw. wo das Problem liegt, aber bei mir funktioniert alles tadellos.
Hab im selben Verzeichnis wie meine Exe-Datei die Datei "test.txt" erstellt und folgenden Code ausgeführt.
string file = "test.txt";
if (System.IO.File.Exists(Application.StartupPath+"\\"+file))
MessageBox.Show("ja");
else MessageBox.Show("nein");
Wenn die Datei existiert wird ja ausgegeben sonst nein. Klappt alles wie es klappen soll.
Ich denke der Fehler liegt irgendwo in deinem Code.
Mfg Preli
//edit:
Ich denke Application.StarupPath ist schon das was du brauchst. (siehe MSDN http://msdn2.microsoft.com/en-us/library/system.windows.forms.application.startuppath.aspx)
Gets the path for the executable file that started the application, not including the executable name.
evtl nur Verknüpfung kopiert...
Directory.GetCurrentDirectory()
sollte auch gehen...
Aber StartUp muss eigentlich auch gehen ô_O
Original von Riv3r
Directory.GetCurrentDirectory()
sollte auch gehen...
GetCurrentDirectory ruft das aktuelle Arbeitsverzeichnis der Anwendung ab. (siehe MSDN) Dies ist in den meisten Fällen das gleiche Verzeicnis wie die Exe-Datei, muss aber nicht sein.
Mfg Preli
Da hast du Recht...
Aber Programmdateien legt man meistens sowieso ins Arbeitsverzeichnis...
Besser ist aber wirklich deine Lösung.
Wenn Du die Datei dort speichern willst wo Deine Applikation startet, dann ist dass:
Environment.CurrentDirectory
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
Also wenn ich nur:
worksheet.SaveAs(@"BMI-Werte.xls" /*"C:\BMI-Werte.xls"*/, missing, missing, missing, missing, missing, missing, missing, missing, missing);
Wird es in Eigene Datei gespeichert.
Mache ich:
worksheet.SaveAs(@System.Windows.Forms.Application.StartupPath /*"C:\BMI-Werte.xls"*/, missing, missing, missing, missing, missing, missing, missing, missing, missing);
Wird es im Bin verzeichnis gespeichert und nicht im Debug Verzeichnis wo die exe drine ist.
Mache ich: (Directory.GetCurrentDirectory())
worksheet.SaveAs(@Directory.GetCurrentDirectory() /*"C:\BMI-Werte.xls"*/, missing, missing, missing, missing, missing, missing, missing, missing, missing);
Wird es auch im Bin Ordner gespeichert und nicht im Debug.
Noch jemand Vorschläge ?
Mit
string[] asPfade = File.ReadAllLines(Environment.CurrentDirectory + @"\AllgemeineVariablen.ini");
lese ich die Datei AllgemeineVariablen.ini die im Ordner der exe (bei mir dll) liegt - und alles funktioniert...
Solle eigenltich so funktionieren...
Schau dir halt mal im Debug an was Environment.CurrentDirectory zurückgibt!
MfG
Hallo zusammen,
nochmal zur Klarstellung: Das Arbeitsverzeichnis (Environment.CurrentDirectory) muss nicht mit dem Verzeichnis übereinstimmen, in dem die exe liegt (Application.StartupPath). Und wenn man einen reinen Dateinamen (ohne Pfad) angibt, dann wird die Datei eh in Environment.CurrentDirectory gespeichert. Insofern ist die direkte Angabe von Environment.CurrentDirectory eh witzlos.
Hallo Arthuro,
dein Problem ist, dass du nur Application.StartupPath angibst. Du musst aber natürlich Application.StartupPath und den Dazeinamen kombinieren (Path.Combine).
herbivore
Danke , an die antworten bin gerade noch selbst drauf gekommen, dachte ganze zeit kann nicht daran liegen war wohl ein logik fehler...
Hiermit klappt es nun :
Directory.GetCurrentDirectory() + "\BMI-Werte.xls"
LG Arthuro
Hallo Arthuro,
wie ich schon sagte: Wenn du immer in dem Verzeichnis speichern willst, wo die exe liegt, dann musst du Application.StartupPath verwenden.
Und verwende statt + besser Path.Combine.
herbivore
Übrigens: Im CompactFramework 2.0 funktionierten bei mir alle folgenden Aufrufe nicht:
Application.StartupPath
System.IO.Directory.GetCurrentDirectory()
Environment.CurrentDirectory
Directory.GetCurrentDirectory()
Funktioniert hat folgendes:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName ().CodeBase)