Autor Zpráva
juch
Profil *
jakym zpusobem vyexportuju data - napr. z pole[][] do excelu?
Hugo
Profil
http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/

Velmi dobre, pouzivam to delsi dobu a funguje bez problemu.
joejoe
Profil *
no to jde docela blbe - vzhledem k tomu ze excel je propertialni format a ani lidi od microsoftu ti nejsou schopni dat relevantni popis - navic se ruzne verze trosku lisi.

jinak obecne plati, export dat do souboru se dela pomoci funkci fopen, fwrite, fclose

pokud trvas na excelu, tak tusim slo udelat provazani xml souboru s excelem. xml soubor je vlastne textovy soubor se strukturou podobnou html
juch
Profil *
nekde sem potkal vystup co byl pojmenovany xls ale byl to text s tabulatory - coz mi pripada docela jednoduchy, ale zatim badam jak to cely udelat...
llook
Profil
Někde v diskuzi bylo něco o tom, že Excel si dokáže rozebrat i HTML tabulku pokud je poslána s excellovským MIME typem, ale nemůžu to najít.
Určitě ale bude umět CSV - viz fputcsv.
juch
Profil *
trochu sem to obesel pomoci tohoto:


$sloubor="vystup.csv"; //pripadne .xls
header("Content-Description: File Transfer");
//header("Content-Type: application/force-download"); -
header('Content-Type: text/plain; charset=utf-8');
header("Content-Disposition: attachment; filename=\"".$soubor."\"");
echo $text;


ale mam problem / data jsou ukladana v kodovani utf - ktere pouzivam a excel je nedokaze otevrit cz korektne

nepomohlo prejmenovani charsetu z utf-8 na win ci iso / hadam ze predtim bych musel prekopat i samotnej $text na jine kodovani nez utf

a to nevim jak / nemate nejakou fci ke konverzi retezce z utf na win ci iso?
autoczech znam, ale mam pocit ze funguje jen do ascii, ne mezi kodovanim...
zajva
Profil
Já pracuji celkem dost s excelem, nejsem však příliš znalý problematice webové. V každém případě si data uložím z tabulky na web pomocí makra vytvořeného htm dokumentu, s kterým mohu dále pracovat: Makro:

Sub ExportTipyTyden() 'převede vybranou oblast do Htm souboru
' Dim ws As Worksheet
Dim Filename As Variant
Dim TDOpenTag As String, TDCloseTag As String
Dim CellContents As String
Dim Rng As Range
Dim r As Long, c As Integer

' Use the selected range of cells
Set Rng = Application.Intersect(ActiveSheet.UsedRange, Selection)

' Get a file name
Filename = Application.GetSaveAsFilename( _
InitialFileName:="Tipy_tyden.htm", _
fileFilter:="HTML Files(*.htm), *.htm")
If Filename = False Then Exit Sub

' Open the text file
Open Filename For Output As #1

' Write the <TABLE> tag
Print #1, "<TABLE BORDER=1 CELLPADDING=3 style=""font-size: 8pt"">"
' Loop through the cells
For r = 1 To Rng.Rows.Count
Print #1, "<TR>"
For c = 1 To Rng.Columns.Count
TDOpenTag = "<TD ALIGN=RIGHT>"
TDCloseTag = "</TD>"
If Rng.Cells(r, c).Font.Bold Then
TDOpenTag = TDOpenTag & "<B>"
TDCloseTag = "</B>" & TDCloseTag
End If
If Rng.Cells(r, c).Font.Italic Then
TDOpenTag = TDOpenTag & "<I>"
TDCloseTag = "</I>" & TDCloseTag
End If
CellContents = Rng.Cells(r, c).Text
Print #1, TDOpenTag & CellContents & TDCloseTag
Next c
Print #1, "</TR>"
Next r
' Close the table
Print #1, "</TABLE>"

' Close the file
Close #1

' Tell the user
MsgBox Rng.Count & " buněk bylo celkem vyexportováno do: " & Filename
End Sub
splite
Profil
pokud mas data v mySQL tak jiny charset dostanes prikazem

mysql_query("SET NAMES 'cp1250'", $spojeni);

win-1250 neexistuje, pouzij shodny cp-1250

nemusís nutne ukládat soubor na servr (nejaky bandita by ho mohl stáhnout) - pokud si nelámes hlavu s mnozstvím mysql_query můzes ho tvorit "on the fly" treba ve formátu .csv

formát csv vypadá takto:

bunka, bunka2, "bunka ale je v ni mezera";
odradkovani_a_bunka, bunka2, bunka3;
"bunka s mezerou", bunka, bunka

vtip je v tom ze pokud je v bunce mezera musí být celá v uvozovkách. Pokud si z excelu ulozís soubor v .csv a otevres si ho treba v poznámkovém bloku tak je to hezky videt.


Také bych přidal pár hlaviček, kompletní výčet by vypadal takhle:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=\"download.csv\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".strlen($text));

echo $text;
Toto téma je uzamčeno. Odpověď nelze zaslat.

0