使用PHP将上传的Excel文件转换为CSV

4
我正在尝试使用PHP创建一个网页,该网页可以通过浏览按钮上传Excel文件,并将其导入到MySQL数据库中。
我已经能够上传CSV文件并将其导入数据库。
//HTML代码
<form action="import.php" enctype="multipart/form-data" method="post"
role="form">
<input type="file" name="file" id="file" accept=".xls">
<br><br>
<input type="submit" name="submit" value="submit">

//PHP 代码

 if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
 } 
 echo nl2br("Connected to Database successfully \n");
 mysqli_query($conn,'Truncate table sheet');
 $file = $_FILES['file']['tmp_name'];
 file_put_contents($file,str_replace("'","\'",file_get_contents($file)));
 $handle = fopen($file,"r");

// 代码的另一部分

 if($sql) {
     $ffilename=basename($_FILES['file']['name']);
     $filename=preg_replace('/\\.csv/',' ',$ffilename);
     echo "File ".$filename." imported in database";
 } 

我想上传 Excel 文件并将其转换为 CSV 文件,无需按下任何额外的按钮,并使用我一直在使用的相同代码来处理 CSV 文件。也就是说,CSV 文件将被导入,但 Excel 文件将被上传。

2个回答

1
你可以使用 Github: PHPOffice/PhpSpreadsheet,它是 Github: PHPOffice/PHPExcel 的后继者。
使用composer require phpoffice/phpspreadsheet安装。
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$reader = new Xls();
$spreadsheet = $reader->load("test.xls");
$writer = new Csv($spreadsheet);
$writer->save("test.csv");

输入文件 test.xls
这里输入图片描述

输出文件 text.csv
这里输入图片描述


您还可以参考如何使用PHP将Excel XLS转换为CSV进行操作。

谢谢您的回复,但是您能否建议一种不需要使用composer的方法吗?因为在我的系统中,composer无法安装,我已经尝试了很多方法来解决这个错误,但是都没有成功。 - Jessica Gonsalves

-1

你也可以尝试使用https://developers.convertio.co/ru/api/docs/来处理.xlsx文件的混乱,从而节省时间并简单地使用侧面项目API。

我曾经尝试仅使用PHP来完成这些事情,但最终在处理文档方面花费了数小时,并使用了已弃用的库,因此转向了Convertio。

*未受Convertio付费


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接