PhpSpreadsheet是一个用纯PHP编写的库,它提供了一组类,允许您读取和写入不同的电子表格文件格式,如Excel和LibreOffice Calc。
您可以帮助我创建phpspreadsheet的类库,例如CodeIgniter 3中的phpexcel,以将其加载到自动加载config中,以及如何在我的应用程序中将此文件夹在thirt_party下移动此文件夹? 我正在创建...
您可以帮助我创建phpspreadsheet的类库,例如CodeIgniter 3中的phpexcel,以将其加载到自动加载config中,以及如何在我的应用程序中将此文件夹在thirt_party下移动此文件夹? 我正在创建...
“ phpspreadsheet” root composer.json需要php扩展ext-gd *,但缺少它
phpoffice/phpspreadsheet
我可以使用 PHPSpreadsheet 读取和写入 xlsm 文件吗?我是使用 xlsx 文件完成的。 这是我的代码 我可以使用 PHPSpreadsheet 读取和写入 xlsm 文件吗?我是使用 xlsx 文件完成的。 这是我的代码 <?php require 'vendor/autoload.php'; $inputFileName = 'excels/file.xlsm'; /** Load $inputFileName to a Spreadsheet object **/ $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName); //get first sheet in the workbook $inputSheet = $spreadsheet->getSheet(0); //Edit cell D4 with number 10 on first sheet $inputSheet->setCellValue('D4', 10); //Save file as result.xls $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx'); $newFileName = time(); $writer->save("excels/$newFileName.xlsm"); ?> 不,恐怕你不能; PHPSPreadsheet 不支持 xlsm 格式的读取或写入,尽管它能够读取一些 xlsm 文件 PHPSPreadsheet 不支持 .xlsm 文件,目前没有计划在不久的将来添加支持。 但是,如果您需要使用 .xlsm 文件,您可以考虑使用替代库:php-xlsx-fast-editor。 此库可能对编辑 .xlsx 文件很有用,并且可能适用于 .xlsm 文件操作,具体取决于您的要求。
我想使用 phpspreadsheet 将数据导出到 Excel,但我的数据是 12 个字符的数字。所以我需要显示所有字符(121212121212)而不是(1.21212E+11)。 我已经尝试过格式...
PhpSpreadsheet 仅将第一个工作表保存为 csv
我尝试将 XLSX 中的特定工作表另存为 CSV。 首先我尝试使用 setActiveSheetIndexByName() 函数设置活动工作表并调用 \PhpOffice\PhpSpreadsheet\Write... 的 writer 方法...
我们的软件旨在跟踪工作时间,因此我们需要生成包含负时间值的 Excel 文件。 根据 PhpSpreadsheet 文档: 请注意,基准日期本身...
我有多个 Excel 工作表,每次都有动态工作表名称。我正在尝试使用 WithMultipleSheets 接口和 conditionalSheets 方法进行导入。 我根据...定义了 3 个表格类别。
我一直在努力寻找一种方法来读取目录中的excel文件,将名为“Division”的工作表复制到一个新文件中,然后将新工作表的增量编号为1 - Division1,Divi...
有谁知道如何在 PHPExcel 中设置单元格填充? 搜索了30分钟,仍然没有找到合适的解决方案。 没有关于此的有用文档。
有谁知道如何在 PHPExcel 中设置单元格填充? 搜索了30分钟,仍然没有找到合适的解决方案。 没有关于此的有用文档。
如何使用 PhpSpreadsheet 从表格单元格中检索日期?
我有 xlsx 表,我使用 PhpSpreadsheet 来解析它们。某些单元格的格式为日期。问题是 PhpSpreadsheet 以未指定的格式返回日期格式单元格的值...
PhpSpreadsheet 将重复的 MYSQL 记录的值放入先前插入的 EXCEL 列中
我编辑代码,因为我设法将MYSQL记录插入Excel,并将DESCRIPCION和DIA(如果tipoActividad=1)和NOMBRE_SESION和DIA(如果tipoActividad=2)的数据放在它们的位置(w...
由于 PHP-Excel 已被弃用,PHP-Spreadsheet 是在 PHP 中制作 Excel 的新选项。该文档不是最好的,而且 Stackoverflow 上关于 PHP-Spreadsheet 的问题也不是很多,所以...
PhpSpreadsheet 和 PHP 7 > ZipArchive::close 创建临时文件失败
在工作中,我们使用PhpSpreadsheet生成一些Excel文件(我们使用它来提供一些导出)。 这是我使用的简单代码(基于给出的一些示例,但 PhpSpreadsheet )来生成
PhpSpreadsheet 日期导出问题 1900/1904
我正在尝试生成一个可下载的 Excel 文件,其中包含从 PHP 时间戳生成的 Excel 日期。问题是 Windows 版和 Mac 版 Excel 使用两个不同的基准日期,这两个基准日期也各不相同...
Windows 上的 JpGraph 通过 Composer - 未找到类
我已经通过Windows机器上的composer安装了PHPSpreadsheet和JpGraph。我正在使用以下代码,但收到错误“未找到“类‘图表’”。还有其他方式我需要加入吗...
我在我的 php 代码中创建了一个带有一个选项卡的 Excel 文件,并为其命名。 我使用的代码是这样的: // 创建PHP电子表格对象 需要“../vendor/autoload.php”; 使用 PhpOffice\PhpSpreadsheet\
使用 Codeigniter 和 PhpSpreadsheet 获取 ERR_INVALID_RESPONSE
我正在尝试在本地主机环境(XAMPP 和 Mac)上使用 PhpSpreadsheet 和 Codeigniter 生成一个简单的 excel 文件。 首先,我使用 Composer 将 PhpSpreadsheet 放入我的项目中: 作曲家重新...
我想用 PhpSpreadsheet 合并 2 个或更多 excel。我试图保留每张纸的样式,这是我的代码: 我想将 2 个或更多 excel 与 PhpSpreadsheet 合并。我试图保留每张纸的样式,这是我的代码: <?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $inputFileType = 'Xlsx'; $inputFileNames = [ 'a.xlsx', 'b.xlsx', 'c.xlsx' ]; $sheetnames = [ 'Worksheet', 'Worksheet1', 'Worksheet2' ]; $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType); $reader->setLoadSheetsOnly($sheetnames); $inputFileName = array_shift($inputFileNames); $spreadsheetMain = $reader->load($inputFileName); $spreadsheetMain->getActiveSheet()->setTitle('page0'); $contador = 1; foreach ($inputFileNames as $book => $inputFileName) { echo ('$inputFileName: ' . $inputFileName) . '</br>'; $spreadsheet = $reader->load($inputFileName); $clonedWorksheet = clone $spreadsheet->getActiveSheet()->setTitle($inputFileName[0]); $clonedWorksheet->setTitle('page' . $contador); $spreadsheetMain->addSheet($clonedWorksheet); $contador++; } $writer = new Xlsx($spreadsheetMain); $writer->save('prueba1.xlsx'); 为了做我想做的事,我需要改变这一点 $spreadsheetMain->addSheet($clonedWorksheet); 为此$spreadsheetMain->addExternalSheet($clonedWorksheet); 但是当我执行该代码时,我收到错误:“工作表不存在” 我认为它尚未实现,但在文档页面中:https://phpspreadsheet.readthedocs.io/en/develop/topics/worksheets/#copying-worksheets 如果你愿意的话,你可以在这里下载我的excel和代码来尝试: https://drive.google.com/open?id=1qkI8jdYDuA6e5CW6z3k0r_7j1pTvW_6D addExternalSheet的问题是我需要用相同的名称命名两个工作表(我加载的原始工作表和克隆工作表)。 (所有文件都在这里:https://drive.google.com/open?id=1qkI8jdYDuA6e5CW6z3k0r_7j1pTvW_6D,mergeSolved是正确的文件)这是包含解决方案的代码: require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $inputFileType = 'Xlsx'; $inputFileNames = [ 'a.xlsx', 'b.xlsx', 'c.xlsx' ]; $sheetnames = [ 'Worksheet', 'Worksheet1', 'Worksheet2' ]; $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType); $reader->setLoadSheetsOnly($sheetnames); $inputFileName = array_shift($inputFileNames); $spreadsheetMain = $reader->load($inputFileName); $spreadsheetMain->getActiveSheet()->setTitle('page0'); $contador = 1; foreach ($inputFileNames as $book => $inputFileName) { echo ('$inputFileName: ' . $inputFileName) . '</br>'; $spreadsheet = $reader->load($inputFileName); $clonedWorksheet = clone $spreadsheet->getSheetByName('Worksheet'.$contador); $clonedWorksheet->setTitle('Worksheet'.$contador); $spreadsheetMain->addExternalSheet($clonedWorksheet); $contador++; } $writer = new Xlsx($spreadsheetMain); $writer->save('prueba1.xlsx');` require 'vendor/autoload.php'; $lists = [ 'flie_01.xlsx', 'flie_02.xlsx' ]; $outfile='/tmp/merge.xlsx'; $merge_spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $merge_spreadsheet->getProperties()->setCreator("act"); foreach($lists as $file){ if(!file_exists($file)){ continue; } $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx"); $reader->setReadDataOnly(true); $spreadsheet = $reader->load($file); foreach($spreadsheet->getSheetNames() as $sheet_name ){ $clonedWorksheet = clone $spreadsheet->getSheetByName($sheet_name); $clonedWorksheet->setTitle($sheet_name); $merge_spreadsheet->addSheet($clonedWorksheet); } } $merge_spreadsheet->removeSheetByIndex(0); $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet,'Xlsx'); $writer->save($outfile); 您可以检查每个xls内容。可能没有您要加载/复制的工作表。 第 1 步是选择要复制的工作表名称。 步骤 2 确保名称区分大小写。 步骤3 通过测试对象返回NULL来检查加载是否失败? 第 4 步,phpspreadsheet 似乎更新了,您可能需要再次调整脚本以避免错误或警告 if(!file_exists($file)){ continue; } $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx"); $reader->setReadDataOnly(true); $spreadsheet = $reader->load($file); foreach($spreadsheet->getSheetNames() as $sheet_name ){ $clonedWorksheet = clone $spreadsheet->getSheetByName($sheet_name); $clonedWorksheet->setTitle($sheet_name); $merge_spreadsheet->addSheet($clonedWorksheet); } 说明: 记得辨别类型。当您处理不同类型时,添加的标识会对您有所帮助 过滤您的工作表。正如上面的答案提到的,您可能需要确保仅加载您需要的工作表以减少内存消耗。 记得设置标题并避免使用相同的名称。建议使用简称 您可以删除或注释代码中的echo。用于调试目的的回显 当您在 Excel 上找不到工作表时(C.xlsx 上的示例)。检查对象是否为NULL?如果您没有加载工作表,则会显示错误(在 null 上调用成员函数 setTitle() ) 您可以使用其他方法保存Excel。记得使用 spreadsheetMain 出于某种原因。我无法使用克隆。 脚本在 php 8.2 上测试