pierwiast
28.09.2010, 15:53:17
Witam
Mam problem z otwieraniem pliku xls wygenerowanego z php przez exela (w open office jest dużo lepiej ale też nie idealnie). W edytorach tekstowych otwiera się OK ale klient niestety korzysta tylko z exela.
Pobieram dane z bazy danych i generuję plik *.xls w bardzo prosty sposób - kolumny oddzielone "\t" a wiersze "\n". Wszystko niby spoko ale w jednej z kolumn są ciągi cyfr (w sql - varchar). Niestety program microsoftu jest tak mądry że domyślnie interpretuje te ciągi jako liczbę. Jeżeli z początku są zera to je ignoruje i skraca ciąg liczbowy. Na szybko poradziłem sobie tak że w php pododawałem myślniki przed i po ciągu liczb. Niby OK ale można by pewnie bez tych znaków dodatkowych. Może zna ktoś zna bardziej profesjonalny sposób aby sobie z tym poradzić?
netmare
28.09.2010, 17:14:37
Ubranie ciągów tekstowych w cudzysłów powinno pomóc.
pierwiast
28.09.2010, 17:23:18
Próbowałem. To było pierwsze co mi przyszło do głowy. Niestety nie pomaga. Wygenerowany plik otwarty w notepad++ posiada cudzysłowy. Excel to olewa.
netmare
28.09.2010, 17:28:14
Nie posiadam Excela, więc Ci nie powiem na pewno, ale chyba zastosowanie ' przed tekstem powoduje że traktuje ciąg jako tekst nawet jeśli inaczej potraktowałby go inaczej. Najlepiej chyba jednak byłoby gdybyś otworzył Excela zaznaczył kolumnę nadał jej formatowanie tekstowe wpisał ciąg z zerami na początku i zapisał jako .csv.
Edit:
I oczywiście podejrzał w notepadzie co tam Excel sobie dorzuca.
Pilsener
29.09.2010, 09:10:42
CSV a Excel to dwie różne bajki, rozwiązań jest kilka, każde ma jakieś wady i zalety:
- serwować plik jako tekst a przy jego otwieraniu korzystać z wbudowanego importu plików tekstowych
- utworzyć plik .xls korzystając z odpowiedniej klasy (excel spreadsheet writer z tego co pamiętam) z odpowiednim formatowaniem
- poprzedzić liczby apostrofem, np. '000345
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.