用PHP编辑XLS中的数据,然后导入到mySQL中

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

我看了几个开源项目:

  • PHP的Excel阅读器
  • ExcelRead
  • 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的东西来读取数据,编辑它,然后将其发送到DB或B.使用类似PHPExcel的东西将XLS转换为CSV,做一个原始导入到临时表中,编辑数据并将其插入到旧表中。

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

我search了很多关键词,大部分都是关于如何读/写/预览XLS的结果。 我正在寻找build议,以最简单和最简单的步骤完成所有这些事情。

请参阅本文中关于使用PHP-ExcelReader的内容 ,特别是标题为“打开表格”的简短部分。

你有任何解决scheme将最终看起来像这样:

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

您似乎对“编辑数据”有这种注意。 这只是PHP – 您从XLS阅读器获得一个值,用PHP代码修改它,然后插入到数据库中。 没有中间文件,你不要修改XLS – 它只是PHP。

这是一个超级简单,未经testing的程序内部循环的例子,你需要写。 这只是为了说明一般模式。

 $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); }