【问题标题】:PHPExcel modify existing .xlsx file with multiple worksheetPHPExcel用多个工作表修改现有的.xlsx文件
【发布时间】:2011-11-27 12:14:32
【问题描述】:

require_once '../Classes/PHPExcel/IOFactory.php';


/** PHPExcel */require_once '../Classes/PHPExcel.php';

$excel2 = PHPExcel_IOFactory::createReader('Excel2007');
$excel2 = $excel2->load('dentkey.xlsx');
$excel2->setLoadAllSheets();
$excel2->setActiveSheetIndex(0);
$excel2->getActiveSheet()->setCellValue('C6', '4')           

->setCellValue('C7', '5')         

  ->setCellValue('C8', '6')       

    ->setCellValue('C9', '7');
$excel2->setActiveSheetIndex(1);
$excel2->getActiveSheet()->setCellValue('A7', '4')

->setCellValue('C7', '5');


$objWriter = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007');
$objWriter->save('dentkey1.xlsx');


在这里,我可以加载 (.xlsx) 文件,也可以修改 (dentkey.xlsx)。 但是在生成新的 .xlsx 文件 (dentkey1.xlsx) 后.. (dentkey.xlsx) 中的所有工作表数据都没有加载,我也无法为第二个工作表设置值。

你可以的

$excel2->setActiveSheetIndex(1);
$excel2->getActiveSheet()->setCellValue('A7', '4')

->setCellValue('C7', '5');

未将值 5 设置为生成的 (dentkey.xlsx) 文件的“C7”列

请帮帮我...

非常感谢

【问题讨论】:

  • 是否可以在追加模式下写入excel?场景:1)创建新的 excel 对象并插入数据 2)通过添加新工作表将对象写入现有的 excel 文件,因此如果文件具有工作表:“Sheet 1”、“Sheet 2”、“Sheet 3”,写入将创建“ Sheet 4" 但不会删除之前写的工作表

标签: php wordpress phpexcel


【解决方案1】:

此代码似乎有效,已在本地环境中测试 WampServer Version 2.1

从这里下载最新版本的 PHPExcel PHPExcel 1.7.6

工作代码。

<?php
error_reporting(E_ALL);
date_default_timezone_set('Europe/London');
require_once '../Classes/PHPExcel/IOFactory.php';
require_once '../Classes/PHPExcel.php';

$excel2 = PHPExcel_IOFactory::createReader('Excel2007');
$excel2 = $excel2->load('nTest.xlsx'); // Empty Sheet
$excel2->setActiveSheetIndex(0);
$excel2->getActiveSheet()->setCellValue('C6', '4')
    ->setCellValue('C7', '5')
    ->setCellValue('C8', '6')       
    ->setCellValue('C9', '7');

$excel2->setActiveSheetIndex(1);
$excel2->getActiveSheet()->setCellValue('A7', '4')
    ->setCellValue('C7', '5');
$objWriter = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007');
$objWriter->save('Nimit New.xlsx');
?>

从您的代码中删除这一行:$excel2-&gt;setLoadAllSheets();

希望这会有所帮助。

【讨论】:

  • 感谢您的回复...您好 nDudani,请告诉您我的 xlsx 文件(dentket.xlsx)包含宏和函数(计算),通过使用您的代码,新文件 (dentkey1.xlsx) 是生成,但不使用现有函数或宏,我希望你理解我的问题.....
  • 你能把dentket.xlsx上传到某个地方吗?所以我可以在真实场景中测试
  • 是的,当然,你有什么想法吗(在上传这个 xlsx 文件后)你和我都可以访问这个文件..或者你可以给我你的电子邮件地址,我会立即发送给你...提前非常感谢。
  • PHPExcel 不支持宏和用户定义的函数;并且库在加载时会丢弃工作簿的任何不受支持的功能,因此它们根本不存在于 PHPExcel 对象中……保存时,PHPExcel 仅保存工作簿中存在于 PHPExcel 对象中的那些元素。跨度>
  • hi nDudani,在 PHPExce/cell.php 第 288 行中,我刚刚注释了异常代码行,结论是我的 xlsx 文件将使用现有数据加载,但不参考多页,计算是也保持不变...感谢大家的帮助我
猜你喜欢
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
相关资源
最近更新 更多