【问题标题】:Removing fields from excel using phpexcel after MYSQL queryMYSQL查询后使用phpexcel从excel中删除字段
【发布时间】:2012-11-06 02:01:02
【问题描述】:

我正在使用 PHPExcel 从 MYSQL 数据库中导出数据并将其导入到 excel 文件中。

我有一个看起来像这样的数据库(这也是我使用 PHPExcel 生成的 excel 文件当前的样子):

======================================================
|           Question                  |   Answer     |
=========+===========+===============================|
| Do you listen to music?             |    YES       |            
|----------------------------------------------------|
| Who is your favorite music artists? | Justin Beiber| 
|----------------------------------------------------|
| <p> Select an Answer<p>             |              | 
|----------------------------------------------------|
|Are you a Male or female             |      M       | 
|----------------------------------------------------|

我希望我的 excel 文件如下所示:

======================================================
|           Question                  |   Answer     |
=========+===========+===============================|
| Do you listen to music?             |    YES       |            
|----------------------------------------------------|
| Who is your favorite music artists? | Justin Beiber| 
|----------------------------------------------------|
|Are you a Male or female             |      M       | 
|----------------------------------------------------|

我正在使用此代码:

$objPHPExcel = new PHPExcel();

$col = 1; 
while($row_data = mysql_fetch_assoc($result)) {
    $row = 1;
    if ($col == 1) {
        $row_headings = array_keys($row_data);
        foreach($row_headings as $value) {
            $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
            $row++;
        }
        $row = 1;
        $col++;
    }
    foreach($row_data as $value) {
      if (!strstr('<p>', $value)){
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);

    $row++;
         }
    }
    $col++;
}

【问题讨论】:

    标签: php mysql phpexcel


    【解决方案1】:

    一种选择是在执行 SQL 查询时排除 &lt;p&gt; Select an Answer&lt;p&gt;,您将选择列和行,然后从您的选择中选择 DELETE WHERE question = "&lt;p&gt; Select an Answer&lt;p&gt; "

    或者如果列Anwser的值为null"",而Question的值为&lt;p&gt; Select an Answer&lt;p&gt;,那么你也可以说:

    if($value !== null)
    {
      // Output...
    } 
    

    例如:

    $objPHPExcel = new PHPExcel();
    
    $col = 1; 
    while($row_data = mysql_fetch_assoc($result)) {
        $row = 1;
        if ($col == 1) {
            $row_headings = array_keys($row_data);
            foreach($row_headings as $value) {
                $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
                $row++;
            }
            $row = 1;
            $col++;
        }
        foreach($row_data as $value) {
            if($value !== null || $value !== '')
            {
             $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
             $row++;
            }
        }
        $col++;
    }
    

    或者您可以简单地删除包含 &lt;p&gt; Select an Answer&lt;p&gt; 的行,除非您需要它们。

    【讨论】:

    • 问题是数据库中有多个字段包含其他html指令语句,如

      填写调查

      所以我不能只取出

      选择一个答案

      字段。此外,此时无法更改数据库。有没有办法可以取出以 html 代码开头的字段,例如 - if($value !==

      ) {write to excel file}

    • 您是否在代码上尝试过我的示例应该从您的数据库中排除任何具有 Anwser 列和空值或空值的行。否则,您总是可以只说 if(!strstr('

      ', $value)) { ... } 并且它不应该将任何包含该标签的行输出到 excel 中。也就是说,如果您的数据库中的所有条目都是这样,那么该问题包含一些 html 而 anwser 什么都不包含。

    • 我已经更新了我的代码。我在 foreach 之后添加了 if(!strstr('

      ', $value)) { ... },但我仍然得到相同的输出。

    • 你能告诉我我的代码有什么问题吗?
    • 你能发布整个php文件吗
    猜你喜欢
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2014-03-03
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多