私は現在、PHPから.xlsファイルを作成する最良の方法を見つけようとしています。ヘッダーのコンテンツタイプを "application/vnd.ms-Excel"に変更し、データをコンマ区切り形式で出力するだけでよいように思えます。これはこれを行うための最良の方法ですか?
助けてくれてありがとう!
大都市
[〜#〜]編集[〜#〜]
データをHTMLとして出力することは悪いことでしょうか?この問題のために拡張したいクラスがすでにあるので、サードパーティのソリューションを避けたいと思います。そのファイル形式を最大限に活用するには、データを出力するための最良の方法を知る必要があるだけです。
PHPExcelを調べたところ、この問題の最善の解決策のようです。私はあなたのすべての答えに感謝します、そして私が笑えるならば、私は3つの正しい答えを与えたでしょう。しかし、賛成票は行う必要があります:)
CSVファイルまたはXLSファイルが必要かどうかによって異なります。 XLSファイルには、セルのフォーマット情報、およびCSVファイルでは不可能な行/列のロック、保護、その他の機能を含めることができます。また、CSVファイルを開くとき、ExcelはUTF-8でエンコードされたコンテンツを正しくサポートしないことに注意してください。
フォーマットされたXLSファイルが必要な場合は、そのフォーマットでファイルを書き込むことができる PhpSpreadsheet などのライブラリ、またはExcelがインストールされているWindowsでサーバーが実行されている場合はCOMが必要です。
excelはhtmlコードをサポートしているので、とても簡単です。したがって、ファイルの上部にヘッダーを追加するだけで、HTMLコードをエコーできます。
header ( "Content-type: application/vnd.ms-Excel" );
header ( "Content-Disposition: attachment; filename=foo_bar.xls" );
echo "<table><tr><th>Header1</th></tr><tr><td>value1</td></tr></table>";
これによりExcelファイルが生成されます!
Microsoft Officeが理解できる XML形式 のいずれかを使用できます。
詳細/仕様については、Microsoftの OpenXML Developer サイトを参照してください。
呼び出されたライブラリ PHPExcel があり、これを支援するために見ることができます。
もちろん、これはあなたが何を意味するかによって異なります:
「そのファイル形式を最大限に活用する」
書式設定のない単純なテーブルがある場合は、CSVファイルで十分です。ただし、スプレッドシートのより多くの機能を使用したい場合は、OpenXMLを検討することをお勧めします。
あなたは単にhtmlを出力することができ、Excelの新しいバージョンはそれを読みます。しかし、それを使ってどの程度の書式設定ができるかわかりません。
データの入力、豊富な書式設定、または数式が必要な場合、私は PHPExcel で成功しています。
私の好みはCSVファイルを書き出すことです。 CSVは非常に簡単に記述できる形式で、既存のHTMLテーブルスクリプトから簡単に変換できます。また、Microsoft以外のさまざまなスプレッドシートプログラムで読み取ることができるという利点もあります。 CSVをWebアプリケーションに適したファイル形式にすることができれば、スプレッドシートを入力として受け入れる必要があるときに報酬を得ることができます。 ExcelファイルよりもCSVファイルの読み取りと解析がはるかに簡単です。
SOで XLSファイルラッパー 、ala この投稿 を試してください。
これを見てくださいPEARパッケージ: Spreadsheet Excel Writer
免責事項:私はDocRaptorを開発した会社であるExpected Behaviorで働いています。
つまり、DocRaptorを使用してHTMLからXLSファイルを生成できます。 DocRaptorはRuby on Railsプロジェクトですが、PHPで使用できます。ここにPHPの例を示します。
DocRaptorのホームページへの別のリンクは次のとおりです。
このファイルの使用を開始できます。 Excelファイルが作成され、ダウンロードに役立ちます。ソースコードまたはライブデモをここからダウンロードしてください: http://purpledesign.in/blog/to-generate-Excel-using-php/
このような行を
01-simple-download-xlsx.php
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Roll')
->setCellValue('B1', 'Name')
->setCellValue('C1', 'Total Classes')
->setCellValue('D1', 'Class Attended')
->setCellValue('E1', 'Percentage');
Whileループを使用して、このようなデータベースからデータを印刷できます。
$i=2;
while ($row = $database->fetch_array($result))
{
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$i, $row[0])
->setCellValue('B'.$i, $row[1])
->setCellValue('C'.$i, $row[2])
->setCellValue('D'.$i, $total)
->setCellValue('E'.$i, round(($row[2]/$total)*100));
$i++;
}
はい、それは1つの可能な方法です。MSExcelで開くプレーンCSVファイルが必要な場合。
豊富なXLSファイルが必要な場合は、「CarlosAg.ExcelXmlWriter.dll」などのサードパーティDLLを使用してXLSファイルを作成するなど、多くのオプションがあります。このDLLをネット上で使用したサンプルを検索するか、 ここを見てください