gpt4 book ai didi

php - 使用 PHP 在 XLS 中编辑数据然后导入到 mySQL

转载 作者:可可西里 更新时间:2023-11-01 08:37:08 25 4
gpt4 key购买 nike

我正在尝试将 XLS 文件导入 PHP,然后我可以在其中编辑信息并将其导入 mySQL。我从来没有做过任何与此相关的事情,所以我很难掌握如何处理它。

我看过几个开源项目:

  • PHP Excel 阅读器
  • Excel阅读
  • PHPExcel

这些选项中没有一个完全适合我想做的事情,或者我可能只是没有深入了解文档。

有些事情需要考虑。 XLS 文件无法转换为任何其他文件格式。这是为了方便非技术用户访问。 XLS 文件是在另一个网站上生成的报告,每次都具有相同的格式(列)。例如,每个 XLS 文件都具有相同数量的列(这将是 A1):

*ID   |Email   |First Name  |Last Name  |Paid    |Active   |State  |Country|*

但是,XLS 文件中的列多于要导入到数据库中的列。例如,正在导入的行(这将是 A1):

*ID   |Email  |First Name  |Last Name  |Country*

我知道编辑数据的两种方法之一是 A。使用 PHPExcel 之类的工具读取数据,编辑它,然后将其发送到数据库或 B。使用 PHPExcel 之类的工具将 XLS 转换为 CSV ,对临时表进行原始导入,编辑数据,然后将其插入旧表。

我已经阅读了很多 PHPExcel 文档,但是它没有关于导入数据库的任何内容,我什至不知道在导入之前或之后从哪里开始编辑 XLS。

我用谷歌搜索了很多关键词,大部分找到的结果都是关于如何读/写/预览 XLS 的。我正在寻找有关以最少和最简单的步骤完成所有这些事情的最佳方法的建议。

最佳答案

参见 this article on using PHP-ExcelReader ,特别是标题为“扭转局面”的简短部分。

您拥有的任何解决方案最终都将如下所示:

  1. 从 XLS 中读取一行(需要 XLS 阅读器)
  2. 根据数据库的需要修改行中的数据。
  3. 将修改后的数据插入数据库。

您似乎对“编辑数据”有这种兴趣。这只是 PHP——您从 XLS 读取器获取一个值,用 PHP 代码修改它,然后插入到数据库中。没有中间文件,您无需修改​​ XLS——它只是 PHP。

这是您需要编写的程序内部循环的一个 super 简单、未经测试的示例。这只是为了说明一般模式。

$colsYouWant = array(1,2,3,4,8);
$sql = 'INSERT INTO data (id, email, fname, lname, country) VALUES (?,?,?,?,?)';
$stmt = $pdo->prepare($sql);

$sheet = $excel->sheets[0];
// the excel reader seems to index by 1 instead of 0: be careful!
for ($rowindex=2; $rowindex <= $sheet['numRows']; $rowindex++) {
$xlsRow = $sheet['cells'][$rowindex];
$row = array();
foreach ($colsYouWant as $colindex) {
$row[] = $xlsRow[$colindex];
}
// now let's "edit the row"
// trim all strings
$row = array_map('trim', $row);
// convert id to an integer
$row[0] = (int) $row[0];
// capitalize first and last name
// (use mb_* functions if non-ascii--I don't know spreadsheet's charset)
$row[2] = ucfirst(strtolower($row[2]));
$row[3] = ucfirst(strtolower($row[3]));

// do whatever other normalization you want to $row

// Insert into db:
$stmt->execute($row);
}

关于php - 使用 PHP 在 XLS 中编辑数据然后导入到 mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9087388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com