【发布时间】:2009-06-19 16:31:32
【问题描述】:
我在 Excel 电子表格中列出了数据(文件大小可能永远不会超过 1 mb)。我想使用 PHP 解析数据并插入 MySQL 数据库。
将文件保存为 .xls/.xlsx 并使用 PHP Excel 解析库对其进行解析有什么好处?如果是这样,有哪些好的库可以使用?
显然,我可以将 .xls/.xlsx 保存为 CSV 并以这种方式处理文件。
谢谢!
【问题讨论】:
我在 Excel 电子表格中列出了数据(文件大小可能永远不会超过 1 mb)。我想使用 PHP 解析数据并插入 MySQL 数据库。
将文件保存为 .xls/.xlsx 并使用 PHP Excel 解析库对其进行解析有什么好处?如果是这样,有哪些好的库可以使用?
显然,我可以将 .xls/.xlsx 保存为 CSV 并以这种方式处理文件。
谢谢!
【问题讨论】:
如果您只是关注这些值,我会将其保存为 CSV。这更容易以编程方式解析,尤其是当您尝试在非 Windows 机器上执行此操作时。
话虽如此,导出到 CSV 时会丢失信息。它只会保存单元格的值,而不是它们的格式信息、公式等。如果您需要使用这些信息,最好直接从 Excel 中执行此操作。
这是一个PHP Excel Reading 库。如果您决定直接阅读 Excel 文件,这可能有助于您入门。
【讨论】:
如果您的 Excel 文件包含严格的数据并且不包含公式、脚本、宏等,我会说通过 Excel 解析只会增加开发开销,并且可能会减慢处理速度。在这种情况下,最好将文件转换为 CSV。
还要考虑 MySQL 的 'LOAD DATA INFILE' 命令可用于将整个 CSV 文件导入表中,这可能会使您的事情变得更简单。
【讨论】:
当您为客户提供上传 excel/csv 文件的方式时,您应该考虑到这一点
除此之外,导入 CSV 比导入 XLS 容易得多。
【讨论】:
请记住,如果您将 csv 文件直接导入 Mysql,您可能会遇到日期格式问题(因为 Mysql 使用与 Excel 不同的日期格式)。我发现在保存为 csv 文件之前先更改 Excel 中的日期字段(格式化 yyyy-mm-dd)更容易。 编辑:虽然我自己没有使用过,但其他人推荐 Navicat 作为将 Excel 电子表格或 Access 数据转换为 Mysql 数据库的非常好的工具。可能值得一看。
【讨论】:
Office 2003 有一种名为 SpreadsheetML 的 XML 格式,它介于 XML 和 Excel 之间。我考虑过使用这种格式将数据导入/导出到网站,但这种格式有点复杂。在内部,这种格式将所有引用转换为相对引用。 (相对于当前位置。)更糟糕的是,某些单元格有索引,因此您可能会看到一行只有两个单元格,但第二个单元格可能距第一个单元格 6 列。 (在这种情况下Index=5。)基本上,如果你想使用Excel格式,你需要有一个很好的方法来计算每个单元格的位置,并知道如何以正确的方式翻译单元格中的引用。 如果您只对数据感兴趣,那么 CSV 会更容易实现。作为一种中间解决方案,您可以定义 XML 模式并将 XML 映射添加到电子表格,以将数据导出到 XML 文件。它比 CSV i9mport/export 更复杂,但也更强大。但是 Excel 或 Excel XML 格式本身很难实现。 (或者只是一个不错的挑战,如果你是一个真正的 XML 专家。)
【讨论】: