Laden...

Ausnahme von HRESULT: 0x800A03EC

Erstellt von Sunboy vor 12 Jahren Letzter Beitrag vor 12 Jahren 20.943 Views
S
Sunboy Themenstarter:in
9 Beiträge seit 2008
vor 12 Jahren
Ausnahme von HRESULT: 0x800A03EC

Hallo Zusammen,
ich hoffe, ihr könnt mir helfen.

Aus einem C# Programm fülle ich ein Excelsheet mit Daten. Diese Daten kommen ursprünglich aus eine Datenbank.

Das Füllen passiert mit folgendem Aufruf:
xlRange.Value2 = objData

Die Spalten Anzahl von objData ist immer 106.
Wenn objData 152 Zeilen enthält (objData[152,106]) ist alles O.K.

Wenn jetzt aber objData 21721 Zeilen hat (objData[21721,106]) bekomme ich folgende Com- Exception:
Ausnahme von HRESULT: 0x800A03EC

Wenn ich diese im Try Catch abfange und einfach nicht behandle habe ich in meinem Excelsheet 12542 Zeilen.
Was ist das Problem? Ich habe jetzt zwar schon etwas über regionale Einstellungen bzw. Globalisierung von der MSDN Seite gelesen.
Aber zum einen verstehe ich das nicht ganz und zum anderen ist das bei mir wirklich das Problem? Ich denke, dass Excel soviel auf einmal gar nicht verarbeiten kann (objData.Length = 2302426). Was kann ich dann tun, um wirklich alle Datenzeilen nach Excel zu übertragen?

Danke im voraus!

Viele Grüße
Sunny

K
79 Beiträge seit 2006
vor 12 Jahren

Der erste Gedanke hierbei ist du stöst hierbei an die Begrenzung von Excel. Hast du die Möglichkeit anstelle von XLS, XLSX Dateien zu erstellen?
Diese können mehr Zeilen verarbeiten.

S
Sunboy Themenstarter:in
9 Beiträge seit 2008
vor 12 Jahren

Hallo Killerhase,
danke für die schnelle Antwort. Leider gibt es die Möglichkeit nicht.
Wir verwenden office2003 und soweit ich weiss wurden XLSX Dateien erst mit Office2007 eingeführt. Ausserdem wäre dann beim Weitergeben der Dateien ständig das Problem, dass es evtl. Kompatibilitätsprobleme beim Empfänger gibt.

Aber das muss doch irgendwie gehen. Ich denke, es würde schon helfen wenn ich immer max. 10000 Datenzeilen schreibe bis das Array leer ist.
Aber wie mache ich das? Oder sollte ich eine Arrayliste verwenden? Weiss aber dann nicht, ob diese kompatibel zu Velue2 ist, oder ob ich dann immer in Array konvertiern muss.

Viele Grüße
Sunny

K
79 Beiträge seit 2006
vor 12 Jahren

Also die Beschränkung von Excel scheint es nicht zu sein, da Excel wohl seit Version 97 65'536 Zeilen x 256 Spalten in einem Tabellenblatt verarbeiten kann.

Ist die Range die du abrufst auch groß genug für den Array?
Eventuell kannst du noch etwas mehr Code zeigen.

S
20 Beiträge seit 2010
vor 12 Jahren

Hier noch ein Code schnipsel was davor noch passiert.


Cursor.Current = Cursors.WaitCursor;
Excel.Application xlApp;
Excel.Workbook xlBook;
Excel.Worksheet xlSheet1;
Excel.Range xlRange, xlFormatRange;

Object[,] objData = new Object[DV_Daten.Count, 106];

xlApp = new Excel.Application();
xlBook = xlApp.Workbooks.Add(Missing.Value);
xlBook.Windows.get_Item(1).Caption = "Check";
xlSheet1 = (Excel.Worksheet)xlBook.Worksheets.get_Item(1);
xlSheet1.Name = "Check";
object[] objHeaders = {"header 1","Header2",...};
xlRange = xlSheet1.get_Range("A1", "DB1");
xlRange.Value2 = objHeaders;
xlRange.Font.Bold = true;

for (int r = 0; r < DV_Daten.Count; r++)
{
 // Füllen von objData
}

//Spalteformatierungen mit xlFormatRange
xlRange = xlSheet1.get_Range("A2", "DB" + rowCount.ToString());
xlRange = xlRange.get_Resize(DV_Data.Count, 106);

// set the autofilter on the first row
xlSheet1.Cells.AutoFilter(1, Type.Missing, Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true);

// freeze the Row for the Autofilter 
xlRange.get_Range("C2","CU2");
xlRange.Activate();
xlApp.ActiveWindow.FreezePanes = true;

xlRange.Value2 = objData;


Das soweit der Code

Viele Grüße
Sunny

1.820 Beiträge seit 2005
vor 12 Jahren

Hallo!

Kommt die Exception immer an derselben Stelle, bzw. ist immer ab derselben Zeile Schluss?

Evtl. ist in genau dieser Zeile der Quelldaten ein falscher Wert bzw. einer, welcher von Excel nicht implizit konvertiert werden kann.

Nobody is perfect. I'm sad, i'm not nobody 🙁

1.346 Beiträge seit 2008
vor 12 Jahren

Was ic mir auch vorstellen könnte, wäre, dass die Anzahl der Elemente die du auf einmal reinkopierst zu groß ist. Versuch sie mal Stück für Stück zu kopieren

799 Beiträge seit 2007
vor 12 Jahren

Hallo,

hast du schon einmal die Foren-Suche bemüht? Einige Leute hatten das selbe Problem und konnten es lösen. Vielleicht hilft dir aus dem Fundus eine Lösung.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
2.891 Beiträge seit 2004
vor 12 Jahren

Vielleicht hilft dir aus dem
>
eine Lösung.

Bitte nicht den Link aus der Adresszeile der Suche kopieren (denn der geht jetzt nicht mehr), sondern den Copy&Paste-Link benutzen.

S
20 Beiträge seit 2010
vor 12 Jahren

Hallo Zusammen,
danke für euere Hilfe. Das lag wohl tatsächlich an der falschen Formatierung einer Spalte von den 106 Spalten. In einer Spalte stehen nämlich Bemerkungen drin (also nur Text). War aber nicht formatiert (Standard).
Nur blöd dass plötzlich der Text mit einem = anfängt. Sprich eine Formel. Und den Text konnte wohl Excel nicht mehr interpretieren.
Habe die Spalte als Text formatiert. Jetzt scheint es erstmal zu laufen.

Danke euch nochmals vielmals.

Viele Grüße
Sunny