6
Przełączyłem się z biblioteki Interop
na OpenXML
, ponieważ muszę czytać duże pliki Excel
. Wcześniej mogłem użyć:Jak liczyć wiersze na arkusz w OpenXML
worksheet.UsedRange.Rows.Count
, aby uzyskać liczbę wierszy z danymi w arkuszu. Użyłem tych informacji, aby zrobić pasek postępu. W OpenXML nie wiem, jak uzyskać te same informacje o arkuszu. Co mam teraz jest ten kod:
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(path, false))
{
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
int row_count = 0, col_count;
// here I would like to get the info about the number of rows
foreach (Row r in sheetData.Elements<Row>())
{
col_count = 0;
if (row_count > 10)
{
foreach (Cell c in r.Elements<Cell>())
{
// do some stuff
// update progressbar
}
}
row_count++;
}
}
Więc, musiałem wcześniej zrobić tę pętlę? Wystarczy zliczyć wiersze? Pytam o to, ponieważ w głównej pętli, w której przetwarzam dane, aktualizuję pasek postępu, ale wcześniej musiałem ustawić jego maksymalną właściwość (która jest liczbą rzędów w arkuszu). – Jacobian
Przepraszam, że w pośpiechu ... spróbuj newsest update :) Używa LINQ –
Dla twojej odpowiedzi ... nie, nie będziesz potrzebować :) Moja odpowiedź zawiera liczbę wierszy dostępnych dla wszystkich arkuszy w arkuszu roboczym .. po prostu wykorzystaj dostarczony kod :) –