Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Eksport do *.xls - wymuszenie formatu
Forum PHP.pl > Forum > PHP
pierwiast
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
Ubranie ciągów tekstowych w cudzysłów powinno pomóc.
pierwiast
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. smile.gif
netmare
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.