我正试图将一个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的文章,特别是标题为"翻转表格"的小节。
你所拥有的任何解决方案最终都会是这样的:
- 从XLS读取一行(需要XLS读取器)
- 根据数据库的需要修改行中的数据
- 将修改后的数据插入数据库
你似乎对"编辑数据"有这种执着。这只是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);
}