| 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;
 
-     }
 
- }
 
 
  |