phpexcle 数据导入导出
2017-09-14 13:42
399 查看
/** * 导出未回答的问题 * @date 2017-09-13 * @return bool or string */ function onexport(){ set_time_limit(0); $sql = 'select a.*,b.description from '. DB_TABLEPRE .'answer as a left join '.DB_TABLEPRE.'question as b on a.qid=b.id where a.content =""'; $export_data = $this->db->fetch_all($sql); if(is_array($export_data)){ include_once ('./plugin/PHPExcel/PHPExcel/IOFactory.php'); // Create new PHPExcel object $objPHPExcel = new PHPExcel(); // Set properties $objPHPExcel->getProperties()->setCreator("ctos") ->setLastModifiedBy("ctos") ->setTitle("Office 2007 XLSX Test Document") ->setSubject("Office 2007 XLSX Test Document") ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") ->setKeywords("office 2007 openxml php") ->setCategory("Test result file"); // set width $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(40); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(40); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(40); // 设置行高度 $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(22); $objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20); // 字体和样式 $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10); $objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); // 设置水平居中 $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // 表头 $elx_title ='未回答的问题'; $objPHPExcel->setActiveSheetIndex(0) //->setCellValue('A1', $elx_title) ->setCellValue('A1', '回答ID') ->setCellValue('B1', '问题ID') ->setCellValue('C1', '提问者') ->setCellValue('D1', '问题') ->setCellValue('E1', '问题补充') ->setCellValue('F1', '回答'); // 内容 for ($i = 0, $len = count($export_data); $i < $len; $i++) { $objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 2), $export_data[$i]['id']); $objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 2), $export_data[$i]['qid']); $objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 2), $export_data[$i]['author']); $objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 2), $export_data[$i]['title']); $objPHPExcel->getActiveSheet(0)->setCellValue('E' . ($i + 2), $export_data[$i]['description']); $objPHPExcel->getActiveSheet(0)->setCellValue('F' . ($i + 2), $export_data[$i]['content']); $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 2) . ':F' . ($i + 2))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 2) . ':F' . ($i + 2))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objPHPExcel->getActiveSheet()->getRowDimension($i + 2)->setRowHeight(16); } // Rename sheet //$objPHPExcel->getActiveSheet()->setTitle($elx_title); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); // 输出 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $elx_title . '.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); } } /** * 导入回复问题的答案 * @date 2017-09-13 * @return bool or string * 数据格式: * array(5) { [0]=>问题ID [1]=>提问者 [2]=>问题 [3]=>问题补充 [4]=>回答 } */ protected function importAnswerUpdateData($files){ header("Content-type: text/html; charset=utf-8"); if (!isset($files['importdata']['tmp_name']) && !$files['importdata']['tmp_name']) { echo '请选择导入的文件';exit(); } $path = './importdata/' . date('Ymd',time()); if(!is_dir($path)){ mkdir($path,0777,true); } $file_name = $path.'/'.date('YmdHis',time()).'.xls'; $flag = move_uploaded_file($files['importdata']['tmp_name'],$file_name); if($flag){ set_time_limit(0); //设置页面等待时间 include_once ('./plugin/PHPExcel/PHPExcel/IOFactory.php'); //文件的扩展名 $ext = strtolower(pathinfo($file_name,PATHINFO_EXTENSION)); if($ext == 'xlsx'){ $reader = PHPExcel_IOFactory::createReader('Excel2007'); }elseif($ext == 'xls'){ $reader = PHPExcel_IOFactory::createReader('Excel5'); } $PHPExcel = $reader->load($file_name); // 文档名称 $objWorksheet = $PHPExcel->getActiveSheet(); $highestRow = $objWorksheet->getHighestRow(); // 取得总行数 // 一次读取一列 $res = array(); for ($row = 2; $row <= $highestRow; $row++) { for ($column = 0; $column<6; $column++) { $val = $objWorksheet->getCellByColumnAndRow($column, $row)->getValue(); if($val){ $res[$row-2][$column] = $val; } } } //更改每条数据 $count = 0; foreach ($res as $value){ try{ $this->db->query('set autocommit=0'); $this->db->query('start transaction'); //更新answer 表的 回答 if($value[5]){ $this->db->query("UPDATE " . DB_TABLEPRE . "answer SET content='".$value[5]."', time=".time()." WHERE id=$value[0] "); } //更新question 表的 问题补充 if ($value[4]) { $this->db->query("UPDATE " . DB_TABLEPRE . "question SET description='" . $value[4] . "' WHERE id=$value[1] "); } $this->db->query('commit'); $this->db->query('set autocommit=1'); $count ++; }catch (Exception $e){ $this->db->query('ROLLBACK'); echo $e->getMessage(); } } echo '<script>alert("总共更新了 : 【'.$count.'】条数据");</script>'; } }
相关文章推荐
- phpexcle在thinkphp3.2.3下的导入导出数据
- PHP将Excel导入数据库及数据库数据导出至Excel的方法
- 用php导入10W条+ 级别的csv大文件数据到mysql。导出10W+级别数据到csv文件
- phpexcel类导出数据 导入数据
- PHPExcel导入和导出的实现,导出数据过多失败,设置导出格式。
- PHP批量导入和导出数据为CSV文件 (自适应版)
- laravel框架实现excel表格数据导入导出-php
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- 使用PHP导入Excel和导出数据为Excel文件
- php数据导入导出之excel(csv文件)
- 【代码实现】PHP导入Excel和导出数据为Excel文件
- php数据导入导出之excel(csv文件)
- 转--使用PHP导入Excel和导出数据为Excel文件
- phpadmin如何导入导出大数据文件及php.ini参数修改
- PHP使用PHPexcel导入导出数据的方法
- PHP使用PHPexcel导入导出数据的方法
- 使用PHP导入Excel和导出数据为Excel文件
- 使用PHP导入Excel和导出数据为Excel文件
- phpexcle 导出数据 日期格式的问题
- 使用PHP导入Excel和导出数据为Excel文件