123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- <?php
- class Model_excelnew extends Lin_Model {
- private $objSheet ;
- function __construct(){
- parent::__construct();
- }
- public function doHeadMerg($titlename,$filename,$header,$list_data){
- libxml_use_internal_errors(true);
- require_once "./data/excel/PHPExcel/IOFactory.php";
- $objPHPExcel = new PHPExcel();
- $objSheet = $objPHPExcel->getActiveSheet();
- $objSheet->getDefaultStyle()->getNumberFormat()->setFormatCode('@');
- $columns = range('A', 'Z'); // 支持最多26列:ml-citation{ref="7" data="citationList"}
- $columnIndex = 0;
- $end_column_title = "A";
- // 设置表头内容
- $header_title_name = [];
- foreach ($header as $fieldName) {
- $end_column_title = $column = $columns[$columnIndex];
- $objSheet->setCellValue($column . '1', $fieldName['title']);
- $columnIndex++;
- $header_title_name[] = $end_column_title;
- }
-
- // 合并主标题
- $objSheet->mergeCells('A1:'.$end_column_title.'1');
- $objSheet->setCellValue('A1', $titlename);
-
- // 主标题样式
- $mainHeaderStyle = [
- 'font' => ['bold' => true, 'size' => 16],
- 'alignment' => ['horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER]
- ];
- $objSheet->getStyle('A1:D1')->applyFromArray($mainHeaderStyle);
-
- $tmp_title_list = array_column($header,'title');
- // 子表头
- $objSheet->fromArray($tmp_title_list, null, 'A2');
-
- // 子表头样式
- $subHeaderStyle = [
- 'font' => ['bold' => true, 'color' => ['rgb' => '4F81BD']],
- 'fill' => [
- 'type' => PHPExcel_Style_Fill::FILL_SOLID,
- 'color' => ['rgb' => 'DCE6F1']
- ]
- ];
- $objSheet->getStyle('A2:'.$end_column_title.'2')->applyFromArray($subHeaderStyle);
-
- // 设置所有列自适应宽度
- foreach ($header_title_name as $k=>$col) {
- if(empty($header[$k])){
- $objSheet->getColumnDimension($col)->setAutoSize(true); // 自动调整:ml-citation{ref="1,5" data="citationList"}
- }else{
- if($header[$k]['width'] == 0){
- $objSheet->getColumnDimension($col)->setAutoSize(true); // 自动调整:ml-citation{ref="1,5" data="citationList"}
- }else{
- $objSheet->getColumnDimension($col)->setWidth($header[$k]['width']); // 自动调整:ml-citation{ref="1,5" data="citationList"}
- }
-
- }
-
- }
- // // 设置列宽
- // $objSheet->getColumnDimension('A')->setWidth(12); // 固定宽度
- // $objSheet->getColumnDimension('B')->setAutoSize(true); // 自动宽度
- // $objSheet->getColumnDimension('C')->setWidth(20);
- // $objSheet->getColumnDimension('D')->setWidth(18);
- // 从第二行开始写入数据
- $rowIndex = 3;
- $objSheet->fromArray($list_data, null, 'A3');
-
- // // 强制设置手机号为文本格式(避免科学计数法)
- // $objSheet->getStyle('A3:A'.$rowIndex)
- // ->getNumberFormat()
- // ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
-
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
- $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
- $objWriter->save('php://output');
- }
- public function doExcel($header,$list){
-
- libxml_use_internal_errors(true);
- require_once "./data/excel/PHPExcel/IOFactory.php";
- $objPHPExcel = new PHPExcel();
- $objSheet = $objPHPExcel->getActiveSheet();
- $columns = range('A', 'Z'); // 支持最多26列:ml-citation{ref="7" data="citationList"}
- $columnIndex = 0;
- // 设置表头内容
- foreach ($header as $fieldName) {
- $column = $columns[$columnIndex];
- $objSheet->setCellValue($column . '1', $fieldName);//自定义宽度
- $columnIndex++;
- }
- //自定义宽度
- foreach ($header as $fieldName) {
- $column = $columns[$columnIndex];
- $objSheet->setCellValue($column . '1', $fieldName);//自定义宽度
- $columnIndex++;
- }
- //$objSheet->getColumnDimension('D')->setAutoSize(true);
- // 设置HTTP头直接下载文件
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- header('Content-Disposition: attachment;filename="user_export.xlsx"');
- header('Cache-Control: max-age=0');
- // 生成Excel文件并输出到浏览器
- $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
- $objWriter->save('php://output');
- exit;
- }
- private function setHeader($header){
-
- }
- // public function setExcel($header,$list){
- // libxml_use_internal_errors(true);
- // require_once "./data/excel/PHPExcel/IOFactory.php";
- // $objPHPExcel = new PHPExcel();
- // $objPHPExcel->getProperties()->setTitle("export")->setDescription("none");
- // $objPHPExcel->setActiveSheetIndex(0);// 创建PHPExcel对象
- // $objPHPExcel = new PHPExcel();
-
- // // 设置文档属性
- // $objPHPExcel->getProperties()
- // ->setCreator("Admin") // 创建者
- // ->setLastModifiedBy("Admin") // 最后修改者
- // ->setTitle("用户数据导出") // 标题
- // ->setSubject("用户信息"); // 主题
-
- // // 操作第一个工作表
- // $objSheet = $objPHPExcel->setActiveSheetIndex(0);
- // $objSheet->setTitle('用户列表'); // 工作表名称
-
- // // 设置表头
- // $objSheet->setCellValue('A1', '用户ID')
- // ->setCellValue('B1', '姓名')
- // ->setCellValue('C1', '手机号')
- // ->setCellValue('D1', '注册时间');
-
- // // 模拟数据填充(示例数据)
- // $data = [
- // [1001, '张三', '13800138000', '2025-01-01'],
- // [1002, '李四', '13912345678', '2025-02-15']
- // ];
-
- // // 从第二行开始写入数据
- // $rowIndex = 2;
- // foreach ($data as $row) {
- // $objSheet->setCellValue('A'.$rowIndex, $row[0])
- // ->setCellValue('B'.$rowIndex, $row[1])
- // ->setCellValue('C'.$rowIndex, $row[2])
- // ->setCellValue('D'.$rowIndex, $row[3]);
- // $rowIndex++;
- // }
-
- // // 强制设置手机号为文本格式(避免科学计数法)
- // $objSheet->getStyle('C2:C'.$rowIndex)
- // ->getNumberFormat()
- // ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
-
- // // 设置HTTP头直接下载文件
- // header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- // header('Content-Disposition: attachment;filename="user_export.xlsx"');
- // header('Cache-Control: max-age=0');
-
- // // 生成Excel文件并输出到浏览器
- // $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
- // $objWriter->save('php://output');
- // exit;
- // }
- public function demo(){
- // 创建PHPExcel对象
- $objPHPExcel = new PHPExcel();
- // 设置文档属性
- $objPHPExcel->getProperties()
- ->setCreator("Admin") // 创建者
- ->setLastModifiedBy("Admin") // 最后修改者
- ->setTitle("用户数据导出") // 标题
- ->setSubject("用户信息"); // 主题
- // 操作第一个工作表
- $objSheet = $objPHPExcel->setActiveSheetIndex(0);
- $objSheet->setTitle('用户列表'); // 工作表名称
- // 设置表头
- $objSheet->setCellValue('A1', '用户ID')
- ->setCellValue('B1', '姓名')
- ->setCellValue('C1', '手机号')
- ->setCellValue('D1', '注册时间');
- // 模拟数据填充(示例数据)
- $data = [
- [1001, '张三', '13800138000', '2025-01-01'],
- [1002, '李四', '13912345678', '2025-02-15']
- ];
- // 从第二行开始写入数据
- $rowIndex = 2;
- foreach ($data as $row) {
- $objSheet->setCellValue('A'.$rowIndex, $row[0])
- ->setCellValue('B'.$rowIndex, $row[1])
- ->setCellValue('C'.$rowIndex, $row[2])
- ->setCellValue('D'.$rowIndex, $row[3]);
- $rowIndex++;
- }
- // 强制设置手机号为文本格式(避免科学计数法)
- $objSheet->getStyle('C2:C'.$rowIndex)
- ->getNumberFormat()
- ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
- // 设置HTTP头直接下载文件
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- header('Content-Disposition: attachment;filename="user_export.xlsx"');
- header('Cache-Control: max-age=0');
- // 生成Excel文件并输出到浏览器
- $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
- $objWriter->save('php://output');
- exit;
- }
- }
|