Używam OLEDB do łączenia i odczytu danych z arkusza kalkulacyjnego Excel. Mam IMEX = "1" i wszystko działa poprawnie. Moim problemem jest to, że arkusze, które czytam, mogą zaczynać się od kilku pustych wierszy, a liczba pustych wierszy jest ważna. Na przykład, gdy czytałem siatkę 5x5, taką jak:Jak liczyć puste wiersze podczas czytania z Excela
- - - - -
- - - - -
2 - 3 3 8
- - - - -
- - 5 2 2
gdzie "-" reprezentuje pustą komórkę. Ważny jest fakt, że dwa pierwsze rzędy są puste. Rozmiar siatki jest dynamiczny. Mój kod wydaje się ignorować pierwsze puste wiersze. Ale zajmuje się pustym wierszem na linii 4 w porządku.
Jak zliczyć liczbę pustych wierszy na początku arkusza programu Excel przy użyciu OLEDB?
jestem ograniczony do korzystania z bazy danych OLE, nie będę, gdybym nie musiał ;-)
using (var adapter = new OleDbDataAdapter("SELECT * FROM [" + worksheetName + "]", connString)) {
var ds = new DataSet();
adapter.Fill(ds, "FareChart");
table = ds.Tables["FareChart"];
}
ciąg połączenia:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Windows\\TEMP\\e1842f90-74a7-42f2-a6fa-208396a1072e;Extended Properties=\"Excel 8.0;IMEX=1;HDR=No\""
UPDATE
Określenie ".xls" jako rozszerzenia pliku w łańcuchu połączenia rozwiązało ten problem i poprawnie odczytało puste wiersze na początku.
Ponadto, używając „-” lub „0” do reprezentowania pusta komórka nie jest opcją, komórki muszą być puste. Dane są w rzeczywistości bardziej złożone niż podany przeze mnie przykład i nie mamy kontroli nad formatowaniem. – RandomDev
nie wiesz, czy to pomaga: http://stackoverflow.com/questions/1138197/oledb-connection-to-excel-how-do-i-select-fixed-width-unbounded-ethight –
Co to jest 'ConnectionString'? – NaveenBhat