2014-03-01 28 views
1

我正在使用PHPExcel编辑现有的Excel工作表。PHPExcel在编辑现有的Excel工作表后删除Excel工作表的数据验证选项

我已经在我的Excel表格中设置了一个数据验证方法,如下所示。 enter image description here

当我编辑此excel使用PHPExcel,此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..."; 
+0

是否使用'$ objRea der-> setReadDataOnly(true);'用这个? –

+0

如果Mark的建议没有帮助,你为什么不在GitHub上打开一个问题? https://github.com/PHPOffice/PHPExcel/issues –

+0

@MarkBaker:我不使用'setReadDataOnly(true)',因为我只是写入数据到excel。我使用完整的代码更新了问题。请检查 – logan

回答

0

从电子表格文件,我已经用数据验证来自于$ G1列表应用值单元格A1刚刚创建:$ 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

+0

我将文件发送到您的电子邮件ID。正如我所说,如果G1:G4最初是空的它不工作。但如果它在写作之前至少有一个价值,那么它的工作。用我的excel与上面的代码一起试试。 – logan