2009-06-19 35 views
2

我在Excel電子表格中列出了數據(文件大小可能永遠不會大於1 MB)。我想用PHP來解析數據並插入到MySQL數據庫中。分析Excel電子表格數據與CSV的優勢?

將文件保存爲.xls/.xlsx並使用PHP Excel解析庫解析它有什麼好處嗎?如果是這樣,有什麼好的圖書館使用?

有意思的是,我可以將.xls/.xlsx保存爲CSV格式並以此方式處理文件。

謝謝!

回答

4

如果您只是在值之後,我會將其另存爲CSV。這在編程方面更容易解析,特別是如果您試圖在非Windows框中執行此操作。

這就是說,導出爲CSV時會丟失信息。它只會保存單元格的值 - 而不是它們的格式信息,公式等。如果您需要使用這些信息,最好直接從Excel中完成。

這裏是一個PHP Excel Reading庫。如果您決定直接閱讀Excel文件,這可能會幫助您開始。

1

如果你的excel文件包含嚴格的數據並且不包含公式,腳本,宏等,我會說通過Excel解析只會增加開發開銷,並且可能會減慢處理速度。在這種情況下,最好將文件轉換爲CSV。

還要考慮MySQL的'LOAD DATA INFILE'命令可用於將整個CSV文件導入到表中,這可能會進一步簡化您的工作。

0

請記住,如果您要將csv文件直接導入到Mysql中,那麼您可能會遇到日期格式問題(因爲Mysql對Excel使用不同的日期格式)。我發現在保存爲csv文件之前,首先更改Excel中的日期字段更容易(格式爲yyyy-mm-dd)。 編輯:雖然我自己並沒有使用它,但其他人已經推薦Navicat作爲將Excel電子表格或Access數據轉換爲Mysql數據庫的非常好的工具。可能值得一看。

0

在Office 2003中,有一種名爲SpreadsheetML的XML格式,它是XML和Excel之間的一種。我曾考慮過使用這種格式將數據導入/導出到網站,但格式有點複雜。在內部,這種格式將所有引用轉換爲相對引用。 (相對於當前位置。)更糟糕的是,某些單元格具有索引,因此您可能會看到只有兩個單元格的行,但第二個單元格可能與第一個單元格相距6列。 (在這種情況下,Index = 5)。基本上,如果要使用Excel格式,您需要有一個很好的方法來計算每個單元格的位置,並知道如何以適當的方式翻譯單元格中的引用。 如果您只對數據感興趣,那麼CSV將會更容易實施。作爲一個介於兩者之間的解決方案,您可以定義一個XML模式,並將XML映射添加到電子表格中以將數據導出到XML文件。它比CSV i9mport/export更復雜,但也更強大。但Excel或Excel XML格式本身實施起來很糟糕。 (或者只是一個很好的挑戰,如果你是一個真正的XML專家。)

1

當你提供了一個方式,爲客戶上傳的Excel/CSV文件,你應該考慮

  1. CSV文件將只導出一張
  2. 擁有多細胞會使CSV解析複雜
  3. 你不能輕易地檢測損壞/不完整的CSV文件
  4. CSV文件不包括格式化

除此之外,導入CSV比導入XLS容易得多。