我在Excel电子表格中列出了数据(文件大小可能永远不会超过1 MB)。我想用PHP来解析数据并插入到MySQL数据库中。
将文件保存为.xls / .xlsx并使用PHP Excel解析库解析它有什么好处吗?如果是这样,有什么好的库可供使用?
很明显,我可以将.xls / .xlsx保存为CSV并以这种方式处理文件。
谢谢!
答案 0 :(得分:4)
如果您只是在值之后,我会将其保存为CSV。这更容易以编程方式解析,特别是如果您尝试在非Windows框中执行此操作。
话虽如此,导出CSV时会丢失信息。它只会保存单元格的值 - 而不是它们的格式信息,公式等。如果您需要使用该信息,最好直接从Excel中执行此操作。
这是一个PHP Excel Reading库。如果您决定直接阅读Excel文件,这可能有助于您入门。
答案 1 :(得分:1)
如果您的excel文件严格包含数据并且不包含公式,脚本,宏等,我会说通过Excel进行解析只会增加开发开销,并且可能会减慢处理速度。在这种情况下,最好将文件转换为CSV。
还要考虑MySQL的“LOAD DATA INFILE”命令可用于将整个CSV文件导入表格中,这可能会使您的问题进一步复杂化。
答案 2 :(得分:1)
当您为客户提供上传excel / csv文件的方法时,您应该考虑
除此之外,导入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专家。)