【问题标题】:Checking if excel cell has a value检查excel单元格是否有值
【发布时间】:2011-02-04 01:37:09
【问题描述】:

我需要从 excel 文件中动态生成表格标题,以便按以下方式输出结果:

国家/地区的价值1 国家价值2 国家价值4

如果它们包含值,请注意没有国家/地区 3

有人帮我写了以下脚本

// Loop the array
foreach ($vCountries as $key => $value) {
   // If value is not empty
   if (!empty($value)) {
      // display the line
      echo '<th id="'.$key.'">'.$value.'</th>'."\n";
   }
}

但现在我需要访问并检查 excel 电子表格以检查是否有值。所以不知何故我需要采用以下代码(这是我的猜测)

//For example, not certain if I can use range in this context in PHP
$data->sheets[0]['cells'].range[6][9].value

并坚持到这个声明中

if (!empty($value)) {

因为我才做 PHP 5 天,我的脑子都乱了……

有什么帮助吗?

【问题讨论】:

  • 您使用什么库来读取 excel 电子表格?
  • 我认为如果你从这个开始会很好:php.net/manual/en/index.php.
  • PHP 无法原生读取 Excel 电子表格,因此没有好的方法可以做到这一点。不过好像有manylibariesthat。我过去使用的一个解决方案是将电子表格导出为 CSV,然后使用 PHP 的 CSV parsing functions
  • @Mark 我从sourceforge.net/projects/phpexcelreader 继承了一些代码,所以我从那里拿了它@Murilo,谢谢我知道这个网站,不幸的是我没有时间学习所有PHP 在完成此工具之前@Austin 是的,我知道,这不是我使用现有阅读器及其功能的原因,但我想知道您是否可以在该上下文中使用范围

标签: php excel


【解决方案1】:

如果您使用的是 PHP-ExcelReader,那么这样的东西应该可以工作

$sheet = 0;
$row = 6;
$col = 9;
if (array_key_exists($row,$data->sheets[$sheet]['cells']) && array_key_exists($col,$data->sheets[$sheet]['cells'][$row])) {
    // cell exists
} else {
   // cell does not exist
}

基本上就是PHP-ExcelReader内部使用的代码

或者:

if(isset($data->sheets[$sheet]['cells'][$row][$col]) {
    // cell exists
} else {
   // cell does not exist
}

编辑

希望您的工作表中没有任何合并的单元格

【讨论】:

  • 谢谢马克。我尝试了以下方法,但我做错了,因为我收到语法错误,意外的 T_ELSE 错误:$vCountries = array(); foreach (vCountries as $key => $value) { // 如果 value 不为空 $sheet = 0; $行 = 1; $col = 8; if (array_key_exists($row,$data->sheets[$sheet]['cells']) && array_key_exists($col,$data->sheets[$sheet]['cells'][$row])) { $ data .= ''.$value.''."\n"; else { }} } $data .= "\t\n\t\t";
  • 不要试图在注释中粘贴代码(除非它只是一行)。编辑您的问题并添加代码,或提出其他问题
  • 您似乎也混淆了我的答案...我不知道您需要查看每个单元格的哪一行和哪一列... $sheet = 0 $row = 6 和 $col = 9 源自您的原始问题,但您的代码需要将这些值设置为您要查看的实际工作表、行和列。
  • 而您得到的 PHP 错误是因为您使用 { 但在 else 之前没有 } 打开 if 语句;然后你有一个虚假的结束 } 稍后
  • 嗨,马克,感谢您的回复,我将发布另一个问题,因为我认为我正在尝试做的事情没有得到很好的解释。
猜你喜欢
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
相关资源
最近更新 更多