【发布时间】:2012-01-24 17:24:43
【问题描述】:
当我使用 PHPExcel 类读取 ods 文件(xls 和 xlsx 都可以)并且两个单元格在一起并包含相同的数据时,第二个单元格变为空白,这是一个错误吗?这是我的代码:
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . '../../Librerias/phpexcel/Classes/');
include 'PHPExcel/IOFactory.php';
$input_fileName = dirname(__FILE__) . '/bug.ods';
$input_file_type = PHPExcel_IOFactory::identify($input_fileName);
$reader = PHPExcel_IOFactory::createReader($input_file_type);
$reader->setReadDataOnly(true);
$objPHPExcel = $reader->load($input_fileName);
$objPHPExcel->setActiveSheetIndex(0);
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator();
$array_data = array();
foreach($rowIterator as $row){
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$rowIndex = $row->getRowIndex ();
foreach ($cellIterator as $cell) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
}
}
echo '<pre>' ; print_r($array_data); echo '</pre>' ;
?>
这里是bug.ods中的内容
| A | B | C | D | E | F
-----------------------------------------------
1 | 1 | 1 | 2 | 2 | 3 | 3
2 | 2 | 2 | 1 | 1 | 3 | 3
3 | 3 | 3 | 1 | 1 | 2 | 2
4 | a | a | b | b | c | c
5 | b | b | a | a | c | c
6 | c | c | a | a | b | b
...这里是 print_r 输出。
Array
(
[1] => Array
(
[A] => 1
[B] =>
[C] => 2
[D] =>
[E] => 3
)
[2] => Array
(
[A] => 2
[B] =>
[C] => 1
[D] =>
[E] => 3
)
[3] => Array
(
[A] => 3
[B] =>
[C] => 1
[D] =>
[E] => 2
)
[4] => Array
(
[A] => a
[B] =>
[C] => b
[D] =>
[E] => c
)
[5] => Array
(
[A] => b
[B] =>
[C] => a
[D] =>
[E] => c
)
[6] => Array
(
[A] => c
[B] =>
[C] => a
[D] =>
[E] => b
)
)
我做错了吗?是bug吗?
有什么想法吗?
【问题讨论】:
-
当您说
two cells are together时,您的意思是它们是合并的单元格吗?因为如果是这样,这将是预期的行为。当单元格合并时,它们实际上变成了一个单元格,因此只有一个值。返回的结构将显示空单元格以保持表格布局正确。可以说,如果第二个“单元格”是对第一个“单元格”的引用会更好,但这仍然是一种明智的方法...... -
对不起我的英语...我很好,我的意思是,一个单元格紧挨着另一个单元格,而不是合并。像上面的例子。