【问题标题】:PHPExcel removes Data Validation Option of Excel sheet after editing existing Excel SheetPHPExcel 在编辑现有 Excel 工作表后删除 Excel 工作表的数据验证选项
【发布时间】:2014-03-01 20:22:48
【问题描述】:

我正在使用PHPExcel 来编辑现有的 Excel 工作表。

我已经在我的 excel 表中设置了一个数据验证方法,如下所示。

当我使用 PHPExcel 编辑此 Excel 时,此 Excel 特定数据验证消失。

谁能帮我解决这个问题。我需要在不更改其功能的情况下编辑 Excel。

我的 PHP 代码:

 //load existing template..
$objPHPExcel = PHPExcel_IOFactory::load('www/PHPExcelReader/Excel_Uploads/sample.xls');

// Set document properties
$objPHPExcel->getProperties()->setCreator("Logic Item")
                             ->setLastModifiedBy("Logic")
                             ->setTitle("List");
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('AZ1', $combination);

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$file_name='sample.xls';
$objWriter->save($file_name);
echo "Excel is ready to download now...";

【问题讨论】:

  • 你在用$objReader->setReadDataOnly(true);这个吗?
  • 如果 Mark 的建议没有帮助,为什么不在 GitHub 上打开一个问题? github.com/PHPOffice/PHPExcel/issues
  • @MarkBaker:我没有使用setReadDataOnly(true),因为我只是将数据写入excel。我用完整的代码更新了问题。请检查
  • 无法复制此问题,请您提供一个演示该问题的电子表格文件
  • @MarkBaker:我无法在此处附加 xls 文件。请提供电子邮件 ID。我是如何产生这个问题的,I had set up an validation on A1 cell from G1:G4 cells. Intially G1:G4 is empty so A1 will show one blank dropdown list. Then i am writing G1:G4 using PHPExcel , values are written but A1 cell does not have the validation.

标签: php phpexcel


【解决方案1】:

从我刚刚在单元格 A1 上使用数据验证创建的电子表格文件中应用 $G1:$G4 中的列表中的值和以下代码:

$inputFileType = 'Excel5';
$inputFileName = './15datavalidationUnpopulated.xls';
$outputFileType = 'Excel5';
$outputFileName = './15datavalidationPopulated.xls';

$objPHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objPHPExcelReader->load($inputFileName);

$objPHPExcel->getActiveSheet()->setCellValue('G1', "India")
                              ->setCellValue('G2', "America")
                              ->setCellValue('G3', "China")
                              ->setCellValue('G4', "Russia");

$objPHPExcelWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,$outputFileType);
$objPHPExcel = $objPHPExcelWriter->save($outputFileName);

适用于 .xls 和 .xlsx 文件,在单元格 A1 的数据验证下拉列表中显示印度、美国、中国和俄罗斯

【讨论】:

  • 我已将文件发送到您的电子邮件 ID。正如我所说,如果 G1:G4 最初为空,则它不起作用。但如果它在写入之前至少有一个值,那么它就可以工作了。用上面的代码试试我的excel。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多