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


Editing Data in an XLS with PHP then importing into mySQL

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

我看过一些开源项目:

  • PHP Excel阅读器
  • ExcelRead
  • PHPExcel

这些选项都不适合我想要做的事情,或者我只是没有深入研究文档。

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

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

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

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

我知道编辑数据的两种方法之一是A.使用PHPExcel之类的东西读取数据,编辑它,然后将其发送到DB或B.使用PHPEexcel之类的方法将XLS转换为CSV,将其原始导入到临时表中,编辑数据,并将其插入到旧表中。

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

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

请参阅这篇关于使用PHP ExcelReader的文章,特别是标题为"翻转表格"的小节。

你所拥有的任何解决方案最终都会是这样的:

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

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

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

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