【发布时间】:2014-03-21 18:22:05
【问题描述】:
我认为getCell($X, $y) 或getCellValue($X, $y) 可供人们轻松选择某个值。这很有用,例如在更大的流程之前交叉检查数据。
如何从单元格 C3 中获取特定值。
我不想对一组值进行排序。
【问题讨论】:
-
这样的方法是可用的,并且在整个文档和示例中被广泛使用
我认为getCell($X, $y) 或getCellValue($X, $y) 可供人们轻松选择某个值。这很有用,例如在更大的流程之前交叉检查数据。
如何从单元格 C3 中获取特定值。
我不想对一组值进行排序。
【问题讨论】:
开发者文档第 4.5.2 节
按坐标检索单元格
要检索单元格的值,应首先使用 getCell 方法从工作表中检索单元格。可以使用以下代码行再次读取单元格的值:
$objPHPExcel->getActiveSheet()->getCell('B8')->getValue();
开发者文档第 4.5.4 节
按列和行检索单元格
要检索单元格的值,应首先使用 getCellByColumnAndRow 方法从工作表中检索单元格。可以使用以下代码行再次读取单元格的值:
// Get cell B8
$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getValue();
如果您需要计算单元格的值,请使用以下代码。这将在 4.4.35 中进一步解释
// Get cell B8
$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getCalculatedValue();
【讨论】:
getValue() 方法返回了一个数据数组...所以我想使用getFormattedValue() 方法,因为它只返回我想要的。我将再次测试并选择一个答案,改进我的答案或确定我是否需要更好地陈述我的问题。顺便说一句,感谢您提供格式正确的答案。
到目前为止最简单的 - 它使用普通的 Excel 坐标:
// Assuming $sheet is a PHPExcel_Worksheet
$value = $sheet->getCell( 'A1' )->getValue();
如果您愿意,可以在函数中将坐标分开:
function getCell( PHPExcel_Worksheet $sheet, /* string */ $x = 'A', /* int */ $y = 1 ) {
return $sheet->getCell( $x . $y );
}
// eg:
getCell( $sheet, 'B', 2 )->getValue();
【讨论】:
这是一个基于来源的答案,请随时改进或评论。
function toNumber($dest)
{
if ($dest)
return ord(strtolower($dest)) - 96;
else
return 0;
}
function myFunction($s,$x,$y){
$x = toNumber($x);
return $s->getCellByColumnAndRow($x, $y)->getFormattedValue();
}
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
$objPHPExcel->setActiveSheetIndex(0);
$sheetData = $objPHPExcel->getActiveSheet();
$cellData = myFunction($sheetData,'B','2');
var_dump($cellData);
这不适用于字母 Z,可以改进,但可以满足我的需要。
【讨论】:
PHPExcel_Cell::columnIndexFromString() 方法而不是您自己的 toNumber() 方法,它可以适用于整个 MS Excel 列范围(不仅仅是 A-Z)