如何* .xlsb转换为数组或* .CSV使用PHP(How to convert *.xlsb t

2019-09-30 17:04发布

我想转换*.xlsb文件到php array*.csv文件(或至少*.xls )。 我试图用PHPExcel ,但看起来它不能识别这是什么文件中。

我注意到,你可以重命名*.xlsb文件转换成*.zip文件,然后使用命令行对其进行解压缩unzip *.zip 。 而在此之后,你会得到与下一个文件夹sheet1.bin文件:

看起来是这样的文件应包含Excel单元格的值,但我仍然不能使用解析它PHPExcel 。 有人可以帮助我为它甚至可以解析*.xlsb文件,并从它那里得到的信息? 或者,也许就可以解析这个sheet1.bin文件?

Answer 1:

PHPExcel不支持XLSB文件 。 XLSB文件格式是一个zip压缩包,一样XLSX,但多数存档内的文件是二进制文件。 二进制文件不容易解析。

一个Excel库支持XLSB文件PHP是EasyXLS 。 您可以从下载库在这里 。

转换XLSB到PHP数组

//Code for reading xlsb file
$workbook = new COM("EasyXLS.ExcelDocument");
$workbook->easy_LoadXLSBFile("file.xlsb");

//Code for building the php array
$xlsTable = $workbook->easy_getSheetAt(0)->easy_getExcelTable();
for ($row=0; $row<$xlsTable->RowCount(); $row++)
{
   for ($column=0; $column<$xlsTable->ColumnCount(); $column++)
   {
       $value = $xlsTable->easy_getCell($row, $column)->getValue();
       //transfer $value into your array
   }
}

要么

//Code for reading xlsb file    
$workbook = new COM("EasyXLS.ExcelDocument");
$rows = $workbook->easy_ReadXLSBActiveSheet_AsList("file.xlsb");

//Code for building the php array
for ($rowIndex=0; $rowIndex<$rows->size(); $rowIndex++)
    {
        $row = $rows->elementAt($rowIndex);
        for ($cellIndex=0; $cellIndex<$row->size(); $cellIndex++)
        {
            $value = $row->elementAt($cellIndex);
            //transfer $value into your array
        }
    }

转换XLSB到CSV

//Code for reading xlsb file
$workbook = new COM("EasyXLS.ExcelDocument");
$workbook->easy_LoadXLSBFile("file.xlsb");

//Code for converting to CSV
$workbook->easy_WriteCSVFile("file.csv", $workbook->easy_getSheetAt(0)->getSheetName());

转换XLSB为XLS

//Code for reading xlsb file
$workbook = new COM("EasyXLS.ExcelDocument");
$workbook->easy_LoadXLSBFile("file.xlsb");

//Code for converting to XLS
$workbook->easy_WriteXLSFile("file.xls");


文章来源: How to convert *.xlsb to array or *.csv using php