2012-01-18 33 views
0

我使用的下面的插件,用於讀取項目建立在微軟excel文件(.xls擴展名)獲取空白列值從SpreadsheetExcelReader

http://php-spreadsheetreader.googlecode.com/svn-history/r26/Excel/OLERead.php

按照它返回讀取Excel當前插件實現作爲一個數組。

在下面的代碼讀取擅長並返回它作爲一個數組

 include_once('spreadsheet_excel_reader.php'); 
     $data = new Spreadsheet_Excel_Reader_New(); 
     $data->setOutputEncoding('CP1251'); 
     $data->read('full path of file'); 
     echo '<pre>';print_r($data->sheets[0]['cells']);echo '</pre>';exit; 

陣列細胞包含在Excel工作表的值等於行數的數量。

每個值本身都是一個由等於表格中列數的鍵組成的數組。

陣列細胞看起來如下 -

[cells] => Array( 
           [1] => Array 
            (
             [1] => a 
             [2] => b 
             [3] => c 
             [4] => d 
             [5] => e 
             [6] => f 
             [7] => g 
            ) 

           [2] => Array 
            (
             [1] => fddfg 
             [2] => dfgd 
             [5] => ghjgh 
             [6] => dgdf 
             [7] => uyijkgh 
            ) 

           [3] => Array 
            (
             [1] => fghfg 
             [2] => gvsfdgdf 
             [4] => fdg4t4 
             [5] => gfdg 
             [6] => dfgd 
             [7] => ghfghf 
            ) 

           [4] => Array 
            (
             [1] => fgh 
             [2] => sfsdf 
             [5] => fghfgh 
             [6] => fsdf 
             [7] => dfgdfg 
            ) 
) 

從上述陣列的關鍵1包含片材的標題的陣列看見。 所以在excel表格中共有7列。 目前,如果任何單元格在工作表中不包含任何值,則會跳過數組 中的這些值,但我的要求是,如果單元格不包含任何值,則該數組應包含空值。

的插件,這整個陣列創建過程發生在以下功能

功能_parsesheet($ SPOS)

我試圖增加對處理空項,但沒有成功一個新的案例。

對上述問題的任何幫助都會很大。

回答

2
$max = 0; 
array_walk($data->sheets[0]['cells'],function($row) use (&$max) { $max = max(max(array_keys($row)),$max); }); 
array_walk($data->sheets[0]['cells'],function(&$row) use ($max) { $row = $row + array_fill_keys(range(1,$max),NULL); ksort($row); }); 

var_dump($data->sheets[0]['cells']); 

用空單元填充每個缺失的列 對缺失的行不做任何操作。 PHP> = 5.3.0

0

它應該如何處理你的內容後的所有空值? 您可以遍歷數組並填充所有缺失的行。