浏览代码

修改tt老客户导出科学计数法问题

lvhao 3 月之前
父节点
当前提交
4f2ba1343d
共有 2 个文件被更改,包括 289 次插入15 次删除
  1. 57 15
      core/CoreApp/controllers/Fullordertt.php
  2. 232 0
      core/CoreApp/models/Model_excelnew.php

+ 57 - 15
core/CoreApp/controllers/Fullordertt.php

@@ -43,6 +43,7 @@ class Fullordertt extends Start_Controller {
 		$this->load->_model('Model_fullordertthb','fullordertthb');
 		$this->load->_model('Model_returngoods','returngoods');
 		$this->load->_model("Model_logic_order","logic_order");
+		$this->load->_model("Model_excelnew",'excelnew');
 	}
 	//定义方法的调用规则 获取URI第二段值
     public function _remap($arg,$arg_array)
@@ -5709,21 +5710,62 @@ class Fullordertt extends Start_Controller {
 						$info_list[$key]['email'] = $emailpass;
 					}
 				}
-				$title = $country['zname'].date('Y-m-d',$timetk).'-'.date('Y-m-d',$timetj); 
-            	$titlename = "<table border=1>
-            	<tr>
-            	<td>订单号</td>
-            	<td>订单状态</td>
-            	<td>产品名</td>
-				<td>客户名</td>
-				<td>客户邮箱</td>
-				<td>下单时间</td>
-				<td>订单金额</td>
-            	</tr>
-            	</table>"; 
-            	$filename = $title.".xls"; 
-				$tail = "\n";
-            	$this->excel->get_fz2($kh,$titlename,$filename,$tail);
+
+				if($excel == '4'){
+					$titlename = "测试";
+					$filename ="ceshi1";
+					$header = [
+						[
+							'title'=>"订单号",
+							'width'=>0,//为0 默认为自动
+						],
+						[
+							'title'=>"订单状态",
+							'width'=>0,//为0 默认为自动
+						],
+						[
+							'title'=>"产品名",
+							'width'=>30,//为0 默认为自动
+						],
+						[
+							'title'=>"客户名",
+							'width'=>0,//为0 默认为自动
+						],
+						[
+							'title'=>"客户邮箱",
+							'width'=>0,//为0 默认为自动
+						],
+						[
+							'title'=>"下单时间",
+							'width'=>0,//为0 默认为自动
+						],
+						[
+							'title'=>"订单金额",
+							'width'=>0,//为0 默认为自动
+						],
+					];
+					$title = $country['zname'].date('Y-m-d',$timetk).'-'.date('Y-m-d',$timetj); 
+					$filename = $title.".xls"; 
+					$data = $kh;
+					$this->excelnew->doHeadMerg($titlename,$filename,$header,$data);
+				}else{
+					$title = $country['zname'].date('Y-m-d',$timetk).'-'.date('Y-m-d',$timetj); 
+					$titlename = "<table border=1>
+					<tr>
+					<td>订单号</td>
+					<td>订单状态</td>
+					<td>产品名</td>
+					<td>客户名</td>
+					<td>客户邮箱</td>
+					<td>下单时间</td>
+					<td>订单金额</td>
+					</tr>
+					</table>"; 
+					$filename = $title.".xls"; 
+					$tail = "\n";
+					$this->excel->get_fz2($kh,$titlename,$filename,$tail);
+				}
+				
 			}
 		}
 	}

+ 232 - 0
core/CoreApp/models/Model_excelnew.php

@@ -0,0 +1,232 @@
+<?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);
+        
+        // 子表头
+        $objSheet->fromArray($header_title_name, 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;
+    }
+}