You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CodeIgniter中将MySQL数据并排(按行)插入Excel?

嘿,我来帮你搞定这个Excel数据行排列的问题!看起来你现在的代码可能没处理好行和列的索引逻辑,导致数据都垂直堆在一起了。咱们调整一下索引的处理方式,就能让数据按行并排呈现啦。

核心思路

要实现横向排数据,关键是:

  • 表头固定在第1行,每个表头字段对应不同的列
  • 每条MySQL数据对应Excel的一行,数据的每个字段填充到同一行的不同列中

修正后的完整代码示例

$this->load->library("excel");
$object = new PHPExcel();
$activeSheet = $object->setActiveSheetIndex(0); // 先获取活动工作表,简化后续调用

// 1. 设置表头(横向排列在第1行)
$table_columns = array("category", "Total YES Count", "Unit");
$colIndex = 0;
foreach($table_columns as $fieldName) {
    // PHPExcel的行/列索引从1开始,表头放第1行,列从0递增
    $activeSheet->setCellValueByColumnAndRow($colIndex, 1, $fieldName);
    $colIndex++;
}

// 2. 从MySQL获取数据(替换成你实际的查询语句)
$dbResult = $this->db->select('category, total_yes_count, unit')
                     ->get('your_table_name')
                     ->result_array();

// 3. 填充数据行(从第2行开始,每行对应一条数据库记录)
$rowIndex = 2;
foreach($dbResult as $singleRow) {
    $colIndex = 0;
    // 遍历当前记录的每个字段,填充到同一行的不同列
    foreach($table_columns as $fieldLabel) {
        // 这里要注意:数据库字段名和表头标签的对应关系
        // 比如表头是"Total YES Count",数据库字段可能是"total_yes_count",所以转成小写下划线匹配
        $dbFieldName = strtolower(str_replace(' ', '_', $fieldLabel));
        $cellValue = isset($singleRow[$dbFieldName]) ? $singleRow[$dbFieldName] : '';
        
        $activeSheet->setCellValueByColumnAndRow($colIndex, $rowIndex, $cellValue);
        $colIndex++;
    }
    $rowIndex++; // 处理完一条记录,行号+1,准备下一行
}

// 4. 导出Excel到浏览器(可选,根据你的需求调整)
$writer = PHPExcel_IOFactory::createWriter($object, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="data_report.xls"');
header('Cache-Control: max-age=0');
$writer->save('php://output');

关键注意点

  • 索引逻辑:PHPExcel的行和列都是从1开始计数的,所以表头放在第1行,数据从第2行开始;列索引从0开始递增,保证同一行的字段横向排列。
  • 字段对应:要确保数据库返回的字段名和表头标签能正确匹配,我上面用了把表头转成小写下划线的方式(比如"Total YES Count"转成"total_yes_count"),如果你的数据库字段名不一样,直接修改$dbFieldName的取值逻辑就行。
  • 性能优化:如果数据量很大,建议分批处理或者考虑用更轻量的Excel处理库(比如PhpSpreadsheet,是PHPExcel的继任者),避免内存溢出。

内容的提问来源于stack exchange,提问作者Aravind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:42:10