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
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!
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
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
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!
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
Ich rede hier aber von Office Service Packs.
Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!
YARRRRRR!
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...
ich werd mal das workaround vom blog versuchen... Danke für die Hilfe
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!
Hab ich gemacht, aber bis jetzt sind noch keine erfolge zu sehen
Mit VBA hat es nie probleme gegeben...
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?
Zeig mal den relevanten Code.
Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!
YARRRRRR!
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...
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!
DANKE!!!
Haut endlich hin... War das vlt ne schwere Geburt...
thx noch mal