2014-07-22 32 views
0

我有管理員通過上傳.xlsx.xls.csv文件轉換成HTML表單更新網站。問題在於第二張工作表NORTH未被保存到第一張工作表SOUTH的服務器中。PHPExcel輸入具有2片材,僅輸出已其中1保存

我的代碼:

<?php 
require('./Classes/PHPExcel/IOFactory.php'); 

ini_set('max_execution_time', 800); 
ini_set('memory_limit', 200M); 

$inputFileType = 'Excel2007'; 
$inputFileName = $_FILES['uploaded']['tmp_name']; 

class MyReadFilter implements PHPExcel_Reader_IReadFilter { 

    public function __construct($fromColumn, $toColumn) { 
     $this->columns = array(); 
     $toColumn++; 
     while ($fromColumn !== $toColumn) { 
     $this->columns[] = $fromColumn++; 
     } 
    } 

    public function readCell($column, $row, $worksheetName = '') { 
      // Read columns from 'A' to 'AF' 
      if (in_array($column, $this->columns)) { 
       return true; 
      } 
      return false; 
     } 
} 

$filterSubset = new MyReadFilter('A', 'AF'); 

$objReader = PHPExcel_IOFactory::createReader($inputFileType); 

$objReader->setReadFilter($filterSubset); 

$objReader->setLoadSheetsOnly(array("SOUTH", "NORTH")); 

$objPHPExcelReader = $objReader->load($inputFileName); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcelReader, 'CSV'); 

$objWriter->save('abc.csv'); 

$files = fopen('abc.csv', 'r'); 
    while (($line = fgetcsv($files)) !== FALSE) { 
    $csv_array[] = array_combine(range(1, count($line)), array_values($line)); 
    } 
?> 

我做了什麼錯,不會允許我的代碼來節省工作表? TIA!

+0

CSV doenst允許工作表,XLS和xlxs做。 – Stefan

+0

真的嗎?我想我只是想,他們這樣做,因爲當你在MS Excel中編輯它們時,你可以打開一個新的(從未嘗試保存它,我認爲它錯誤)。我想我會把它們保存爲兩個不同的電子表格。謝謝@Stefan –

+0

MS Excel本身只允許您在保存爲csv時保存單個工作表 –

回答

1

CSV文件只能容納一個工作表,所以你需要將每個工作表保存到一個單獨的文件

$objReader->setLoadSheetsOnly(array("SOUTH", "NORTH")); 
$objPHPExcelReader = $objReader->load($inputFileName); 

for ($ws = 0; $ws < $objPHPExcelReader->getSheetCount(); $ws++) { 
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcelReader, 'CSV'); 
    $objWriter->setSheetIndex($ws); 
    $objWriter->save('abc' .$ws. '.csv'); 
}