解析Excel电子表格数据与CSV的优势?

时间:2009-06-19 16:31:33

标签: php mysql excel csv

我在Excel电子表格中列出了数据(文件大小可能永远不会超过1 MB)。我想用PHP来解析数据并插入到MySQL数据库中。

将文件保存为.xls / .xlsx并使用PHP Excel解析库解析它有什么好处吗?如果是这样,有什么好的库可供使用?

很明显,我可以将.xls / .xlsx保存为CSV并以这种方式处理文件。

谢谢!

5 个答案:

答案 0 :(得分:4)

如果您只是在值之后,我会将其保存为CSV。这更容易以编程方式解析,特别是如果您尝试在非Windows框中执行此操作。

话虽如此,导出CSV时会丢失信息。它只会保存单元格的值 - 而不是它们的格式信息,公式等。如果您需要使用该信息,最好直接从Excel中执行此操作。

这是一个PHP Excel Reading库。如果您决定直接阅读Excel文件,这可能有助于您入门。

答案 1 :(得分:1)

如果您的excel文件严格包含数据并且不包含公式,脚本,宏等,我会说通过Excel进行解析只会增加开发开销,并且可能会减慢处理速度。在这种情况下,最好将文件转换为CSV。

还要考虑MySQL的“LOAD DATA INFILE”命令可用于将整个CSV文件导入表格中,这可能会使您的问题进一步复杂化。

答案 2 :(得分:1)

当您为客户提供上传excel / csv文件的方法时,您应该考虑

  1. CSV文件只会导出一张
  2. 拥有多行单元格会使CSV解析变得复杂
  3. 您无法轻松检测到损坏/不完整的CSV文件
  4. CSV文件不包含格式
  5. 除此之外,导入CSV比导入XLS容易得多。

答案 3 :(得分:0)

请记住,如果您将csv文件直接导入Mysql,则可能会遇到日期格式问题(因为Mysql使用与Excel不同的日期格式)。我发现在保存为csv文件之前,首先更改Excel中的日期字段(格式化yyyy-mm-dd)会更容易。 编辑:虽然我自己没有使用它,但是其他人推荐使用Navicat作为将Excel电子表格或Access数据转换为Mysql数据库的非常好的工具。值得一看。

答案 4 :(得分:0)

使用Office 2003,有一种名为SpreadsheetML的XML格式,它位于XML和Excel之间。我曾考虑使用这种格式将数据导入/导出到网站,但格式有点复杂。在内部,此格式将所有引用转换为相对引用。 (相对于当前位置。)更糟糕的是,某些单元格具有索引,因此您可能会看到只有两个单元格的行,但第二个单元格可能距离第一个单元格有6列。 (在这种情况下,索引= 5。)基本上,如果要使用Excel格式,则需要有一种很好的方法来计算每个单元格的位置,并知道如何以正确的方式转换单元格中的引用。 如果您只对数据感兴趣,那么CSV将更容易实现。作为中间解决方案,您可以定义XML架构并将XML映射添加到电子表格,以将数据导出到XML文件。它比CSV i9mport / export更复杂,但也更强大。但Excel或Excel XML格式本身实现起来很糟糕。 (或者只是一个很好的挑战,如果你是一个真正的XML专家。)