Hallo Community!
Ich schreibe derzeit an einem Programm (VS2008 mit C#), welches eine Statistik in Excel schreiben soll. Dazu schrieb ich mir eine eigene Methode:
private void Excelschreiben(string kontrollausdruckspfad)
{
ApplicationClass excel;
Worksheet worksheet;
object n;
string pfad = System.Windows.Forms.Application.StartupPath + @"\Kontollausdruck.xlt";
excel = new ApplicationClass();
n = System.Reflection.Missing.Value;
excel.Workbooks.Add(pfad);
excel.Visible = false;
worksheet = (Worksheet)excel.ActiveWorkbook.ActiveSheet;
int zellenrunter = 5;
int zellenrüber = 1;
worksheet.Cells[3, 1] = DateTime.Now.ToLongDateString();
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Luft.accdb");
string sql = "SELECT * FROM tbluebersicht";
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
OleDbDataReader dr = cmd.ExecuteReader();
int feuerwehrid = 0;
string feuerwehrname = "";
int flaschenanzahl = 0;
DateTime datum = DateTime.Now;
DateTime letzterdruck = DateTime.Now;
int id = 0;
int alteid = 0;
string sqla = "SELECT * FROM tblDatum";
OleDbCommand cmda = new OleDbCommand(sqla, con);
OleDbDataReader drdatum = cmda.ExecuteReader();
while (drdatum.Read())
{
id = Convert.ToInt32(drdatum["ID"]);
if (id > alteid)
{
letzterdruck = Convert.ToDateTime(drdatum["Datum"]);
alteid = id;
}
}
while (dr.Read())
{
feuerwehrid = Convert.ToInt32(dr["Feuerwehrid"]);
flaschenanzahl = Convert.ToInt32(dr["Flaschenanzahl"]);
datum = Convert.ToDateTime(dr["Datum"]);
TimeSpan ts = new TimeSpan(datum.Ticks - letzterdruck.Ticks);
int zeitspanne = Convert.ToInt32(ts.TotalSeconds.ToString("0"));
if (zeitspanne > 0)
{
string sqlfid = String.Format("SELECT Feuerwehr FROM tblFeuerwehren WHERE ID={0}", feuerwehrid);
OleDbCommand cmdfid = new OleDbCommand(sqlfid, con);
OleDbDataReader drfid = cmdfid.ExecuteReader();
while (drfid.Read())
{
feuerwehrname = drfid["Feuerwehr"].ToString();
}
drfid.Close();
worksheet.Cells[zellenrunter, zellenrüber] = feuerwehrname;
zellenrüber = zellenrüber + 1;
worksheet.Cells[zellenrunter, zellenrüber] = flaschenanzahl * 2.40;
zellenrüber = zellenrüber + 1;
worksheet.Cells[zellenrunter, zellenrüber] = datum;
zellenrüber = 1;
zellenrunter = zellenrunter + 1;
}
}
dr.Close();
con.Close();
object Dateiname = kontrollausdruckspfad;
object missing = System.Reflection.Missing.Value;
excel.Visible = true;
excel.ActiveWorkbook.SaveAs(Dateiname, missing, missing, missing, missing, missing, XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
object f = false;
excel.Workbooks.Close();
excel.Quit();
}
Wenn ich das Programm unter Visual Studio 2008 ausführe funktioniert alles fabelhaft. Nun hab ich mir einen Installer dazu erstellen lassen. Führt man das Programm aber nun als installierte Version aus so kommt folgende Fehlermeldung:
Microsoft.NET Framework
Unbehandelte Ausnahme in der Anwendung. Klciken Sie auf "Weiter", um den Fehler zu ignorieren und die Anwendung forzusetzen. Wenn Sie auf "Beenden" klicken wird die Anwendung sofort beendet.
Microsoft Office Excel kann auf die Datei 'C:\Programme\bbs-rohrbach\Füllsoft\Kontrolldruck\4C312100' nicht zugreifen. Dies kann mehre Gründe haben.
Komisch finde ich daran, dass es im VS2008 problemlos funtkioniert. Nach der Installation aber nicht mehr.Vl kennt jemand diesen Fehler schon.
Freue mich auf eure Antworten!
hama89 Gast |