PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Excelsheet auslesen mit C#


Gast
2017-06-21, 06:53:43
Hallo,


ich bin gerade dabei ein Excel-Sheet auszulesen, dieses wird nachher in ein Grid geschrieben.

Jede Spalte in einem Grid entspricht dabei einer Spalte im Excel-Sheet.

Monat 1 Monat 2
A B C D E F
ID1: Meter, Betrag, Straße || Meter, Betrag, Straße
ID2: Meter, Betrag, Straße || Meter, Betrag, Straße


Ich habe jeweils den Startpunkt (allerdings nur als Buchstaben)
z. B. Meter steht in Spalte A.
Für das nächste Monat muss ich also 3 Spalten draufrechen, um wieder in der nächsten Meterspalte zu sein:

i = Zeilennummer

cell = (Excel.Range)xlWorkSheet.Cells[i, A + 3];

nächster Durchgang:
cell = (Excel.Range)xlWorkSheet.Cells[i, A + 6];


Leider kann er Spalte A (was ja 1 entspricht) nicht addieren. Gibt es da irgendeine Möglichkeit?

Ich hoffe, das ist einigermaßen verständlich.

Danke

Dr.Doom
2017-06-24, 19:32:03
Von A1- nach Z1S1-Bezugsart umrechnen und mit ermittelten Zahlen weiterarbeiten:

Zeile = Range("A1").Row --> 1
Spalte = Range("A1").Column --> 1

twodoublethree
2017-07-02, 00:31:23
Oder nimm SpreadsheetLight (https://www.nuget.org/packages/SpreadsheetLight/) für alles, was mit Excel zu tun hat. Die Library ist wirklich super für Excel Interop.

Damit kannst Du dann sowas machen:
using SpreadsheetLight;

var maxMonth = 1;
using (var excelDocument = new SLDocument(excelStream))
{
excelDocument.SelectWorksheet("Invoices By Month");
for (var month = 0; month <= maxMonth; month++)
{
var row = 1;
while (excelDocument.HasCellValue(row, 1))
{
var length = excelDocument.GetCellValueAsDecimal(row, 1 + (3 * month));
var amount = excelDocument.GetCellValueAsDecimal(row, 2 + (3 * month));
var street = excelDocument.GetCellValueAsString(row, 3 + (3 * month));
// process the values, e.g. SaveDataset(length, amount, street, month, row)
row++;
}
}
}