2


0

データをExcelスプレッドシートにまとめました(ファイルサイズが1 MBを超えることはおそらくないでしょう)。 PHPを使用してデータを解析し、MySQLデータベースに挿入したいです。

ファイルを.xls / .xlsxとして保持し、PHPのExcel解析ライブラリを使用して解析することに利点はありますか? もしそうなら、使用するためにいくつかの良いライブラリは何ですか?

言うまでもなく、.xls / .xlsxをCSVとして保存し、そのようにファイルを処理することができます。

ありがとうございます。

5 Answer


4


値の直後にいる場合は、CSVとして保存します。 これはプログラム的にパースするのがはるかに簡単です、特にあなたがウィンドウズ以外のボックスでこれをやろうとしているなら。

とはいえ、CSVへのエクスポートで情報が失われる可能性があります。 セルの値のみが保存され、書式設定情報、数式などは保存されません。 その情報を使用する必要がある場合は、Excelから直接実行するほうが賢明です。

これが PHP Excel Readingライブラリです。 あなたが直接Excelファイルを読むことに決めたならば、これはあなたが始めるのを助けるかもしれません。


1


Excelファイルに厳密にデータが含まれていて、数式、スクリプト、マクロなどが含まれていない場合は、Excelによる解析で開発のオーバーヘッドが増えるだけで、処理が遅くなる可能性があります。 この場合、おそらくファイルをCSVに変換するのが最善でしょう。

また、MySQLの 'LOAD DATA INFILE’コマンドを使用してCSVファイル全体をテーブルにインポートできることを検討してください。これは、さらに複雑なことになる可能性があります。


1


顧客がexcel / csvファイルをアップロードする方法を提供するときは、それを考慮する必要があります。

  1. CSVファイルは1枚のシートしかエクスポートしません

  2. 複数行のセルがあると、CSVの解析が複雑になります。

  3. あなたは簡単に破損/不完全なCSVファイルを検出することはできません

  4. CSVファイルにはフォーマットが含まれていません

それ以外にも、CSVのインポートはXLSのインポートよりもはるかに簡単です。


0


csvファイルをMysqlに直接インポートしている場合は、日付形式に問題がある可能性があります(MysqlではExcelとは異なる日付形式が使用されるため)。 csvファイルとして保存する前に、最初にExcelの日付フィールドを(yyyy-mm-ddの形式に)変更するほうが簡単です。 編集:私は自分では使っていませんが、ExcelスプレッドシートやAccessデータをMysqlデータベースに変換するための非常に優れたツールとしてNavicatを推奨している人もいます。 一見の価値があるかもしれません。


0


Office 2003には、SpreadsheetMLと呼ばれるXMLフォーマットがあり、これはXMLとExcelの間に少しあります。 Webサイトへのデータのインポート/エクスポートにこの形式を使用することを検討しましたが、形式は少し複雑になります。 内部的には、このフォーマットはすべての参照を相対参照に変換します。 (現在の位置からの相対位置です。)さらに悪いことに、いくつかのセルにはインデックスがあるので、2つのセルしかない行が表示されますが、2番目のセルは最初のセルから6列離れています。 (この場合、Index = 5です。)基本的に、Excel形式を使用する場合は、各セルの位置を計算し、セル内の参照を適切な方法で変換する方法を知っておく必要があります。 データに興味があるだけであれば、CSVははるかに簡単に実装できます。 中間の解決策として、XMLスキーマを定義し、スプレッドシートにXMLマッピングを追加してデータをXMLファイルにエクスポートすることができます。 CSV i9mport / exportよりも複雑ですが、やや堅牢です。 しかし、ExcelやExcelのXMLフォーマット自体は実装が困難です。 (あなたが本当のXMLのエキスパートであれば、あるいは単なる素晴らしい挑戦です。)