mam potrzeby importowania arkusza kalkulacyjnego Excel w moim programie i mają następujący kod:Jet Engine - 255 znaków obcięcie
string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;IMEX=1;HDR=NO;""", MyExcelFile.xls);
command.CommandText = "SELECT * FROM [Sheet1$]";
(Uwaga, powyższy kod nie jest prawdziwe, ale kod powinien pozwalają zobaczyć, co Robię)
Dostaję plik zaimportowany, tylko problem polega na tym, że kolumny w arkuszu Excel, które mają ponad 255 znaków, są przycinane.
Czy jest jakiś sposób obejścia tego?
Czytałem gdzieś, że jeśli upewnisz się, że w kolumnie w pierwszych 8 rzędach znajduje się długa linia tekstu, to będzie ono traktowane jako pole memo i dlatego nie zostanie obcięte, ale to nie działa.
Wszelkie pomysły?
Graeme
zakończyła się robi to w ten sposób - teraz otworzyć plik Excel poprzez C#, zapisz go do pliku CSV, a następnie analizować to. Dzięki wszystko – Graeme
To jest rozwiązanie? Poważnie? Co za garnek; bezwartościowe, bezwartościowe arkusze kalkulacyjne Excel. W przypadku tak popularnego formatu granica nie jest możliwa do odczytania danych z niego w aplikacji. Nie ma dobrze utrzymanych, otwartych, w pełni funkcjonalnych API do odczytywania arkuszy kalkulacyjnych Xlsx od dzisiaj, a te silniki JET i ACE są tak hackowe (zgadywanie typów pól przez patrzenie na pierwsze X wiersze, obcięcie pól do 255 znaków, hacki rejestru niezbędne do zmiany opcji, program Excel musi być zainstalowany dla niektórych funkcji, plik jest otwarty w Excelu zmienia zachowanie itp.). Co za żart! – Triynko
@Triynko: Całkowicie zgadzam się, że to żart, i niestety jest to żart na naszych programistach :(Tego rodzaju rzeczy sprawiają, że zaczynam myśleć o przeniesieniu się ze stwardnienia rozsianego do czegoś innego, bo to dowodzi, że MS nie dba o to :( –