Excel 07 Interop - Arbeitsblatt läßt sich nicht speichern

22/02/2010 - 16:04 von Andreas Ahrens | Report spam
Hi NG,

ich habe bei folgendem Listing:

namespace Excel_Arbeitsmappen_erweitern
{
class Program
{
[STAThread]
static void Main(string[] args)
{
Console.Title = "Daten in Excel-Arbeitsmappen erweitern";

// Für die wiederholte Ausführung der Demo die Datei zunàchst aus
einem
// Original umkopieren
string appPath = System.IO.Path.GetDirectoryName(
Assembly.GetEntryAssembly().Location);
if (File.Exists(Path.Combine(appPath, "Einkommensberechnung.xls")))
{
File.Delete(Path.Combine(appPath, "Einkommensberechnung.xls"));
}
File.Copy(Path.Combine(appPath, "Einkommensberechnung_Original.xls"),
Path.Combine(appPath, "Einkommensberechnung.xls"));

// Excel-Instanz erzeugen und sichtbar schalten
Microsoft.Office.Interop.Excel.Application excel new Microsoft.Office.Interop.Excel.ApplicationClass();
excel.Visible = true;

// Arbeitsmappe öffnen
object missing = Missing.Value;
string fileName = Path.Combine(appPath, "Einkommensberechnung.xls");
Microsoft.Office.Interop.Excel.Workbook workbook =
excel.Workbooks.Open(
fileName, missing, missing, missing, missing, missing, missing,
missing,
missing, missing, missing, missing, missing, missing, missing);

// Arbeitsblatt 'Einkommensberechnung' referenzieren
Microsoft.Office.Interop.Excel.Worksheet worksheet (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[
"Einkommensberechnung"];

// Suchen der ersten Zeile, die in der ersten Spalte keine Daten
mehr enthàlt
int row = 0;
Microsoft.Office.Interop.Excel.Range range = null;
do
{
row++;
range =
(Microsoft.Office.Interop.Excel.Range)worksheet.Cells[row, 1];
if (range.Value2 == null)
{
break;
}
} while (true);

// Die erste Zelle der letzten Datenzeile referenzieren
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[row -
1, 1];

// Alternative: Ausgehend von der Zelle A1 die letzte Zelle suchen,
// die noch Daten enthàlt
//Microsoft.Office.Interop.Excel.Range range =
worksheet.get_Range("A1",
//
missing).get_End(Microsoft.Office.Interop.Excel.XlDirection.xlDown);

// Eine Zeile einfügen
range.EntireRow.Insert(missing, missing);

// Die erste Zelle in der aktuellen Zeile referenzieren (zur
Sicherheit)
range =
(Microsoft.Office.Interop.Excel.Range)range.EntireRow.Cells[1, 1];

// Die Daten der aktuellen Zeile in die neue oben kopieren
range.get_Offset(-1, 0).Value2 = range.Value2;
range.get_Offset(-1, 1).Value2 = range.get_Offset(0, 1).Value2;

// Daten in die aktuelle Zeile einfügen
range.Value2 = 2008;
range = range.get_Offset(0, 1);
range.Value2 = 185000;

// Eine weitere Zeile einfügen, Daten kopieren und neue Daten
einfügen
range.EntireRow.Insert(missing, missing);
range =
(Microsoft.Office.Interop.Excel.Range)range.EntireRow.Cells[1, 1];
range.get_Offset(-1, 0).Value2 = range.Value2;
range.get_Offset(-1, 1).Value2 = range.get_Offset(0, 1).Value2;
range.Value2 = 2009;
range = range.get_Offset(0, 1);
range.Value2 = 221000;

// Arbeitsmappe speichern

//Erzeugt Excepion: Ausnahme von HRESULT: 0x800A03EC
workbook.Save();

// Excel beenden
excel.Quit();

Console.WriteLine("Die Arbeitsmappe '" + fileName + "' wurde
erweitert.");
Console.WriteLine();
Console.WriteLine("Beenden mit Return");
Console.ReadLine();
}
}
}

das Problem, daß ich nicht speichern kann. Beim Ausführen bekomme ich die
Meldung

Ausnahme von HRESULT: 0x800A03EC.

Woran liegt das?

Gruß
Andy
 

Lesen sie die antworten

#1 Frank Dzaebel
22/02/2010 - 17:55 | Warnen spam
Hallo Andreas,

//Erzeugt Excepion: Ausnahme von HRESULT: 0x800A03EC
workbook.Save();
[...] das Problem, daß ich nicht speichern kann.



u.a.:

[Exceldatei speichern - Meinews.de]
http://www.meinews.net/exceldatei-t237388.html

[Re: Excel aus C# - Meinews.de]
http://www.meinews.net/re-t132628.html

Beachte ggf. auch
http://groups.google.com/group/micr...686f7c643b


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen