Laden...

mit C# ganze Excel-Spalte auslesen

Erstellt von schillerdeluxe vor 15 Jahren Letzter Beitrag vor 15 Jahren 8.688 Views
S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren
mit C# ganze Excel-Spalte auslesen

Hallo,
hab mal wieder ein kleines Problem:

Muss ein Excel sheet mit VS2008 auslesen. Hab das aber vorher noch nie gemacht und mich natürlich schon ein bisschen im I-Net schlau gemacht, bin teilweise auch fündig geworden.

Aber das Problem is, das man bei get_Range ja die Startzelle und die Endzelle angeben muss z.B.: Worksheet.get_Range("A1","A500");

Wenn ich jetzt aber sage, ich weiß nicht wo meine erste Zelle befüllt ist und meine letzte aufhört, dann könnte das ein bisschen komplizierter werden (was ich mir aber nicht vorstellen kann, weil das .NET Framework hat für alle simplen Aufgaben sehr triviale lösungen).

Kann mir irgendjemand helfen?

mfg, danke shcon im vorhinein

1.200 Beiträge seit 2007
vor 15 Jahren

Mit den get_End Methoden kannts du die Dimension der Column bestimmen. Das ist allerdings nicht ganz sauber, wie die ganze VBA Programmierung.


//erste benutzte Zelle finden (in Spalte A)
aRange = worksheet.get_Range(worksheet.Cells[1, 1], Missing.Value).get_End(XlDirection..xlDown);

//letzte benutzte Zelle finden (Excel 2003 hat max. 65536 Zeilen
aRange = worksheet.Range(worksheet.Cells[65536,1], Missing.Value).get_End(XlDirection.xlUp);

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

Hab das jetzt so gemacht, jedoch kommt dann eine exeption bei folgenden Code:


 Range range = ws.get_Range(ws.Cells[1, 1], Missing.Value).get_End(XlDirection.xlDown);

Exception:
COMException wurde nicht behandelt.
Ausnahme von RESULT: 0x800A03EC

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

Hab das jetzt so gemacht, jedoch kommt dann eine exeption bei folgenden Code:


 Range range = ws.get_Range(ws.Cells[1, 1], Missing.Value).get_End(XlDirection.xlDown);

Exception:
COMException wurde nicht behandelt.
Ausnahme von HRESULT: 0x800A03EC

1.200 Beiträge seit 2007
vor 15 Jahren

Das hat entweder was mit der Lokalisierung zu tun, oder das ***** Excel hängt sich mal wieder an Dingen auf wie dem "Group Modus". Versuch mal bevor du irgendwas machst das Sheet explizit zu selektieren.

Im www meinen auch manche man bräuchte bei dem Fehler Service Pack 2 für Office.

http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

bin gerade drauf gekommen, dass mein pc in der arbeit gar kein SP installiert hat, versuch mir mal des SP 2 oder 3 drauf zu tun und dann mal weiter sehen..

mfg

1.200 Beiträge seit 2007
vor 15 Jahren

Ich rede hier aber von Office Service Packs.

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

Ja, hab mir jetzt SP 2 für Excel installiert, kommt aber immer noch die selbe exception...

und mit der lokalisierung, ich glaube nicht, weil das Sheet is im selben ordner wie die Solution...

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

ich werd mal das workaround vom blog versuchen... Danke für die Hilfe

1.200 Beiträge seit 2007
vor 15 Jahren

Du weisst gar nicht wo die Lokalisierung überall Probleme macht beim Office Interop.

Geh mal in die Registry und setz dort mal den Key HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\LanguageResources auf 1033.

11.0 = Office 2003
12.0 = Office 2007

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

Hab ich gemacht, aber bis jetzt sind noch keine erfolge zu sehen

Mit VBA hat es nie probleme gegeben...

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

Na toll, jetzt wirft er mir zwar keine Exception, aber jetzt lese ich die Werte ein, die ein den Spalten stehen und den einzigen wert den er mir schreibt is :

System.__ComObject

Wieso kann das sein?

1.200 Beiträge seit 2007
vor 15 Jahren

Zeig mal den relevanten Code.

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

 List<string> returnList = new List<string>();
for (int i = 1; i < 8565; i++)
            {
                string marketName = ws.get_Range(columnIndex + i.ToString(), Missing.Value).ToString();
                returnList.Add(marketName);
            }
            return returnList;


Und an jeder Stelle der Liste ist eben System.__ComObject...

1.200 Beiträge seit 2007
vor 15 Jahren

Zieh dir mal die Value raus:

string marketName = ws.get_Range(columnIndex + i.ToString(), Missing.Value).Value2.ToString();

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 15 Jahren

DANKE!!!

Haut endlich hin... War das vlt ne schwere Geburt...

thx noch mal