Index.php 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace app\index\controller;
  3. use think\Db;
  4. use think\Controller;
  5. use think\Loader;
  6. class Index extends Controller
  7. {
  8. public function __construct()
  9. {
  10. parent::__construct();
  11. }
  12. public function index()
  13. {
  14. return $this->fetch();
  15. }
  16. public function impExcel(){
  17. vendor("PHPExcel.PHPExcel");
  18. Loader::import('PHPExcel.PHPExcel.IOFactory.PHPExcel_IOFactory');
  19. Loader::import('PHPExcel.PHPExcel.Reader.Excel5');
  20. $objPHPExcel = new \PHPExcel();
  21. //获取表单上传文件
  22. $file = request()->file('excel');
  23. $info = $file->validate(['size'=>2097152,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel');
  24. if($info){
  25. $exclePath = $info->getSaveName(); //获取文件名
  26. $name=strrchr($exclePath,'.');
  27. $file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $exclePath; //上传文件的地址
  28. if($name=='.xlsx'){
  29. $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
  30. }elseif($name=='.xls'){
  31. $objReader =\PHPExcel_IOFactory::createReader('Excel5');
  32. }elseif($name=='.csv'){
  33. $objReader =\PHPExcel_IOFactory::createReader('csv');
  34. }
  35. $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8'); //加载文件内容,编码utf-8
  36. $excel_array=$obj_PHPExcel->getsheet(0)->toArray(); //转换为数组格式
  37. array_shift($excel_array); //删除第一个数组(标题);
  38. $data = [];
  39. $i=0;
  40. foreach($excel_array as $k=>$v) {
  41. $data[$k]['id'] = $v[0];
  42. $data[$k]['name'] = $v[1];
  43. $data[$k]['image'] = $v[2];
  44. $i++;
  45. }
  46. $success=Db::name('member')->insertAll($data); //批量插入数据
  47. $error=$i-$success;
  48. echo "总{$i}条,成功{$success}条,失败{$error}条。";
  49. }else{
  50. // 上传失败获取错误信息
  51. echo $file->getError();
  52. }
  53. }
  54. public function expExcel()
  55. {
  56. vendor("PHPExcel.PHPExcel");
  57. $list=db('member')->field('*')->select();
  58. $objPHPExcel = new \PHPExcel();
  59. $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
  60. //设置sheet名称
  61. $sheets=$objPHPExcel->getActiveSheet()->setTitle('demo');
  62. //设置sheet列头信息
  63. $objPHPExcel->setActiveSheetIndex()->setCellValue('A1', 'id')->setCellValue('B1', 'name')->setCellValue('C1', 'image');
  64. $i=2;
  65. foreach($list as $v){
  66. //设置单元格的值
  67. $sheets=$objPHPExcel->getActiveSheet()->setCellValue('A'.$i,$v['id']);
  68. $sheets=$objPHPExcel->getActiveSheet()->setCellValue('B'.$i,$v['name']);
  69. $sheets=$objPHPExcel->getActiveSheet()->setCellValue('C'.$i,$v['image']);
  70. $i++;
  71. }
  72. //整体设置字体和字体大小
  73. $objPHPExcel->getDefaultStyle()->getFont()->setName( 'Arial');
  74. $objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
  75. // $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); //单元格宽度自适应
  76. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); //设置列宽度
  77. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20); //设置列宽度
  78. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20); //设置列宽度
  79. $objPHPExcel->getActiveSheet()->getStyle('B3')->getFont()->setBold(true); //设置单元格字体加粗
  80. // 输出Excel表格到浏览器下载
  81. header('Content-Type: application/vnd.ms-excel');
  82. header('Content-Disposition: attachment;filename="demo.xls"'); //excel表格名称
  83. $objWriter->save('php://output');
  84. }
  85. }