我的数据库是mysql,有两个字段是text类型,在前台录入时,回车换行了。然后生成excel就变成下面的效果:
20101103 中关村 刘先生 潘进 ="打印时报:1.数据读取错误
            2.小模块出纸错误
地址:中关村1+1大厦1层" 换机器 20101103 13:24 20101104 17:33 已解决
正常效果应该是:
20101103 中关村 刘先生 潘进 打印时报:1.数据读取错误 2.小模块出纸错误 地址:中关村1+1大厦1层 换机器 20101103 13:24 20101104 17:33 已解决 数据在form表单代码:<textarea cols="60" rows="8" name="question"></textarea>如何解决这个问题呢?

解决方案 »

  1.   

     /**
         * 导出数据
         *
         * @param unknown_type $ary
         * @param unknown_type $GetKeys
         */
        function ExecutionExportPrint($ary,&$GetKeys)//$ary是结果集,$GetKeys是你选择复选框才导出对应的数据字段
        {
         //定义此数组存储excel列标
    $_total  = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX');
    //定义表格title
    $_totaltitle = array(
    'WorkID'=>'稿件编号',
    'DesignTime'=>'设计日期',
    'ProdName'=>'期刊名称',
    'IssueTime'=>'刊期',
    'DeptID'=>'部门名称',
    'CorpName'=>'客户名称',
    'Pusn'=>'客户助理',
    'Designer'=>'设计师',
    'P'=>'p数',
    'Color'=>'颜色',
    'EditionName'=>'版位',
    'WorkType'=>'类型',
    'WorkStatus'=>'稿件状态',
    'Urgency'=>'紧急程度'
    );

    //截取与字段数目等值的一段列标数组
    for ($i = 0; $i < count($GetKeys); $i++)
    {
    $column[$i] = $_total[$i];
    }
    //组装成 列标=>字段名 的数据结构。
    $fieldmap    = array_combine($column,$GetKeys);
    $objExcel    = new PHPExcel();
    $objActSheet = $objExcel -> getActiveSheet(0); 
    //error_reporting(E_ALL);
    //使用cache_towincache方式,单元格对象会保存在Wincache中,只在内存中保存索引
            $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_wincache;  
            $cacheSettings = array( 'cacheTime'        => 600  
                          );  
           PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
             
    //第一行插入title,设置居中
    for ($i = 1;$i <= count($ary);$i ++)
    {
    foreach ($fieldmap as $key=>$value)
    {
    $objActSheet -> setCellValue($key.'1', transformUtf8($_totaltitle[$value]));//列值
            //$objActSheet -> getColumnDimension($key) -> setWidth();//宽度
            $objActSheet -> getStyle($key.'1')       -> getAlignment() -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $objActSheet -> setCellValue($key.($i+1), transformUtf8($ary[$i-1] -> $value));
    $objActSheet -> getStyle($key.($i+1))    -> getAlignment() -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);  
    }
    }
    if(self::ex == '2007') 
    { //导出excel2007文档  
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');  
         header('Content-Disposition: attachment;filename="'.date('Ymdhis').'.xlsx"');  
         header('Cache-Control: max-age=0');  
         $objWriter =  PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');  
         $objWriter -> save('php://output');  
         exit;
        
    } else 
    {  //导出excel2003文档  
         header('Content-Type: application/vnd.ms-excel;charset=UTF-8');  
         header('Content-Disposition: attachment;filename="'.date('Ymdhis').'_Excel.xls"');  
         header('Cache-Control: max-age=0');  
         $objWriter =  PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');  
         $objWriter -> save('php://output');  
         exit;

    }
      

  2.   


    HTML:
    <div class="tab_cells">可选择的导出列;</div><div>
      <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
        <tr>      <td width="15%" bgcolor="#FFFFFF"><input name="WorkID" type="checkbox" id="WorkID" value="1" checked="checked"  />
    稿件ID</td>
          <td width="17%" bgcolor="#FFFFFF"><input name="DesignTime" type="checkbox" id="DesignTime" value="1" checked="checked" />
    制作日期</td>
          <td width="16%" bgcolor="#FFFFFF"><input name="ProdName" type="checkbox" id="ProdName" value="1" checked="checked" />
    期刊名称</td>
          <td width="10%" bgcolor="#FFFFFF"><input name="IssueTime" type="checkbox" id="IssueTime" value="1" checked="checked" />
    刊期</td>
          <td width="10%" bgcolor="#FFFFFF"><input name="DeptID" type="checkbox" id="DeptID" value="1" checked="checked" />部门</td>
          <td width="14%" bgcolor="#FFFFFF"><input name="CorpName" type="checkbox" id="CorpName" value="1" checked="checked" />
    客户 </td>
          <td width="18%" bgcolor="#FFFFFF"><input name="Pusn" type="checkbox" id="Pusn" value="1" checked="checked" />
    客户助理</td>
          </tr>
        <tr>
          <td bgcolor="#FFFFFF"><input name="Designer" type="checkbox" id="Designer" value="1" checked="checked" />
    设计师 </td>      <td bgcolor="#FFFFFF"><input name="P" type="checkbox" id="P" value="1" checked="checked" />
    P数</td>
          <td bgcolor="#FFFFFF"><input name="Color" type="checkbox" id="Color" value="1" checked="checked" />
    色彩 </td>
          <td bgcolor="#FFFFFF"><input name="EditionName" type="checkbox" id="EditionName" value="1" checked="checked" />
    版位</td>
          <td bgcolor="#FFFFFF"><input name="WorkType" type="checkbox" id="WorkType" value="1" checked="checked" />
    类型</td>
          <td bgcolor="#FFFFFF"><input name="Urgency" type="checkbox" id="Urgency" value="1" checked="checked" />紧急程度</td>
          <td bgcolor="#FFFFFF"><input name="WorkStatus" type="checkbox" id="WorkStatus" value="1" checked="checked" />
    状态</td>
          </tr>
       
      </table>
    </div>
      

  3.   

    谢谢!
    我的主要问题是采用什么措施在我的代码基础上解决导出的数据在excel中错行的问题?
      

  4.   

    是否是 $questions 这里除了问题?
    $questions=str_replace("<br />","",nl2br(htmlspecialchars($query_row[question])));
    改成
    $questions = preg_replace("/[\r\n]/s", "\t", $query_row[question]);
      

  5.   

    谢谢“唠叨”!对您的建议稍作修改,$questions = preg_replace("/[\r\n]/s", "", $query_row[question]);