PHPexcel 保存到 CSV 链接单元格到另一个 sheet 是空的
PHPexcel save to CSV linked cells to another sheet are empty
有人可以帮助我吗?
我有 xlsx 文件,有 2 sheets.
第二个 sheet 包含链接到另一个(第一个)sheet 的单元格。
当我将 sheet 保存到 CSV 文件时:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
此函数不保存(链接的)单元格值...
我的代码如下所示:
$objPHPExcel = new PHPExcel();
// Read your Excel workbook
try
{
$inputFileType = PHPExcel_IOFactory::identify($excelFile);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setLoadSheetsOnly('list');
$objReader->setLoadSheetsOnly('main');
/* I also tried like this:
$worksheetList = $objReader->listWorksheetNames($excelFile);
$sheetname = $worksheetList[0];
$sheetname2 = $worksheetList[1];
$objReader->setLoadSheetsOnly($worksheetList[0]);
$objReader->setLoadSheetsOnly($sheetname);
*/
$objPHPExcel = $objReader->load($excelFile);
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save($filename);
我也尝试保存到 EXCEL 文件(xls 和 xlsx)-> 同样的问题,单元格(已链接)是空的...
我的链接单元格如下所示:“=list!C46”
找了几个小时的答案,我没有找到好的解决方案:
我删除了以下任何一行:$objReader->setLoadSheetsOnly('list');
并添加:
$activeSheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
$objPHPExcel->getActiveSheet()->fromArray($activeSheetData, false);
就在:
之后
$objPHPExcel = $objReader->load($excelFile);
并添加:$objWriter->setSheetIndex(1);
现在可以用了,但是有问题...
原始格式的一列有这样的链接单元格:"=list!$AV$46"
我的意思是用 $ 符号。
更详细:
如果我有:$objReader->setReadDataOnly(true);
并拥有这些单元格:“=list!$AV$46”然后它们在输出中为空。
但是如果我删除:$objReader->setReadDataOnly(true);
然后那些单元格:“=list!$AV$46”效果很好并且有一个值,但格式
喜欢:2017 年 11 月 17 日。
因为我删除了$objReader->setReadDataOnly(true);
,所以我不能申请
这是我的代码:
$objPHPExcel->setActiveSheetIndex(1)->getStyle('AV1:AV'.$highestRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD);
那么第二个问题,新的日期格式怎么写?
我还想说,初始日期格式是:
2017 年 11 月 17 日。
我想要 17-11-17 (FORMAT_DATE_YYYYMMDD).
同样,看起来像 "=list!AV46"
的单元格都很好。
更新: 溶剂化:$objReader->setLoadSheetsOnly(['list', 'main']);
+ $objPHPExcel->setActiveSheetIndex(1);
在任何一个之前:$objPHPExcel->getActiveSheet()->...
这是你的第一个问题
$objReader->setLoadSheetsOnly('list');
$objReader->setLoadSheetsOnly('main');
您只会加载一个 sheet,您告诉 PHPExcel 加载的最后一个 main
。多次调用 setLoadSheetsOnly()
会覆盖上一次调用的设置。
如果您想加载两个 sheet,则需要传递一个数组,列出您要加载的所有 sheet 名称
$objReader->setLoadSheetsOnly(['list', 'main']);
中有解释
文档还说不要使用 $objReader->setReadDataOnly(true);
除非你明白它在做什么;它告诉 PHPExcel 只加载 rw 数据,而不是数据的格式; Excel.
中数字与日期的区别在于格式
有人可以帮助我吗? 我有 xlsx 文件,有 2 sheets.
第二个 sheet 包含链接到另一个(第一个)sheet 的单元格。 当我将 sheet 保存到 CSV 文件时:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
此函数不保存(链接的)单元格值...
我的代码如下所示:
$objPHPExcel = new PHPExcel();
// Read your Excel workbook
try
{
$inputFileType = PHPExcel_IOFactory::identify($excelFile);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setLoadSheetsOnly('list');
$objReader->setLoadSheetsOnly('main');
/* I also tried like this:
$worksheetList = $objReader->listWorksheetNames($excelFile);
$sheetname = $worksheetList[0];
$sheetname2 = $worksheetList[1];
$objReader->setLoadSheetsOnly($worksheetList[0]);
$objReader->setLoadSheetsOnly($sheetname);
*/
$objPHPExcel = $objReader->load($excelFile);
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save($filename);
我也尝试保存到 EXCEL 文件(xls 和 xlsx)-> 同样的问题,单元格(已链接)是空的...
我的链接单元格如下所示:“=list!C46”
找了几个小时的答案,我没有找到好的解决方案:
我删除了以下任何一行:$objReader->setLoadSheetsOnly('list');
并添加:
$activeSheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
$objPHPExcel->getActiveSheet()->fromArray($activeSheetData, false);
就在:
之后$objPHPExcel = $objReader->load($excelFile);
并添加:$objWriter->setSheetIndex(1);
现在可以用了,但是有问题...
原始格式的一列有这样的链接单元格:"=list!$AV$46" 我的意思是用 $ 符号。
更详细:
如果我有:$objReader->setReadDataOnly(true);
并拥有这些单元格:“=list!$AV$46”然后它们在输出中为空。
但是如果我删除:$objReader->setReadDataOnly(true);
然后那些单元格:“=list!$AV$46”效果很好并且有一个值,但格式
喜欢:2017 年 11 月 17 日。
因为我删除了$objReader->setReadDataOnly(true);
,所以我不能申请
这是我的代码:
$objPHPExcel->setActiveSheetIndex(1)->getStyle('AV1:AV'.$highestRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD);
那么第二个问题,新的日期格式怎么写? 我还想说,初始日期格式是: 2017 年 11 月 17 日。 我想要 17-11-17 (FORMAT_DATE_YYYYMMDD).
同样,看起来像 "=list!AV46"
的单元格都很好。
更新: 溶剂化:$objReader->setLoadSheetsOnly(['list', 'main']);
+ $objPHPExcel->setActiveSheetIndex(1);
在任何一个之前:$objPHPExcel->getActiveSheet()->...
这是你的第一个问题
$objReader->setLoadSheetsOnly('list');
$objReader->setLoadSheetsOnly('main');
您只会加载一个 sheet,您告诉 PHPExcel 加载的最后一个 main
。多次调用 setLoadSheetsOnly()
会覆盖上一次调用的设置。
如果您想加载两个 sheet,则需要传递一个数组,列出您要加载的所有 sheet 名称
$objReader->setLoadSheetsOnly(['list', 'main']);
中有解释
文档还说不要使用 $objReader->setReadDataOnly(true);
除非你明白它在做什么;它告诉 PHPExcel 只加载 rw 数据,而不是数据的格式; Excel.