PHPEXCEL精简版之导出导入
来源:互联网 发布:windows cmd telnet 编辑:程序博客网 时间:2024/05/18 21:39
我们知道PHPEXCEL原版非常大。classes文件大小达到20M之多,当然里面的功能也是非常丰富的,但是当我只需要导出与导入功能时 就显得非常大了
精简后的PHPexcel大小2M都不到,并且能够完全满足导出与导入,当然里面还是有一些冗余用不到的 但是已经很小了
文件下载我会在后面给出链接
案例说明:
1.目录结构
|--PHPExcel phpexcel核心文件夹
|--PHPExcel.php phpexcel核心文件
|--read.php excel导入案例
|--write.php excel导出案例
|--xabc.xlsx xabcd.xls write.xlsx案例中使用或生成的excel文件
2.文件详细说明
2.1读取文件 read.php读取xabc.xlsx,xabcd.xls
里面分别介绍了如何导入xls xlsx两种格式文件的导入 并将其转换为数组 ,或者直接另存为新的excel文件
转换为数组之后我们可以进行导入到数据库或者直接展示等操作
<?phprequire_once './PHPExcel/IOFactory.php';$file = 'xabc.xlsx';//$file = 'xabcd.xls';$fileArr = explode('.',$file);$exts = $fileArr[1];if (!file_exists($file)) {exit("no file.\n");}if ($exts == 'xls') {$type = 'Excel5';} else if ($exts == 'xlsx') {$type = 'Excel2007';} $objReader = PHPExcel_IOFactory::createReader($type); try{$objPHPExcel = $objReader->load($file);}catch(Exception $e){}$allWorksheets = $objPHPExcel->getAllSheets();$i = 0; foreach($allWorksheets as $objWorksheet){ $sheetname=$objWorksheet->getTitle(); $allRow = $objWorksheet->getHighestRow();//how many rows $highestColumn = $objWorksheet->getHighestColumn();//how many columns $allColumn = PHPExcel_Cell::columnIndexFromString($highestColumn); $array[$i]["Title"] = $sheetname; $array[$i]["Cols"] = $allColumn; $array[$i]["Rows"] = $allRow; $arr = array(); $isMergeCell = array(); foreach ($objWorksheet->getMergeCells() as $cells) {//merge cells foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference) { $isMergeCell[$cellReference] = true; } } for($currentRow = 1 ;$currentRow<=$allRow;$currentRow++){ $row = array(); for($currentColumn=0;$currentColumn<$allColumn;$currentColumn++){; $cell =$objWorksheet->getCellByColumnAndRow($currentColumn, $currentRow); $afCol = PHPExcel_Cell::stringFromColumnIndex($currentColumn+1); $bfCol = PHPExcel_Cell::stringFromColumnIndex($currentColumn-1); $col = PHPExcel_Cell::stringFromColumnIndex($currentColumn); $address = $col.$currentRow; $value = $objWorksheet->getCell($address)->getValue(); if(substr($value,0,1)=='='){ return array("error"=>0,'message'=>'can not use the formula!'); exit; } if($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_NUMERIC){ $cellstyleformat=$cell->getParent()->getStyle( $cell->getCoordinate() )->getNumberFormat(); $formatcode=$cellstyleformat->getFormatCode(); if (preg_match('/^([$[A-Z]*-[0-9A-F]*])*[hmsdy]/i', $formatcode)) { $value=gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value)); }else{ $value=PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode); } } if($isMergeCell[$col.$currentRow]&&$isMergeCell[$afCol.$currentRow]&&!empty($value)){ $temp = $value; }elseif($isMergeCell[$col.$currentRow]&&$isMergeCell[$col.($currentRow-1)]&&empty($value)){ $value=$arr[$currentRow-1][$currentColumn]; }elseif($isMergeCell[$col.$currentRow]&&$isMergeCell[$bfCol.$currentRow]&&empty($value)){ $value=$temp; } $row[$currentColumn] = (string)$value; } $arr[$currentRow] = $row; } $array[$i]["Content"] = $arr; $i++; }print_r($array); //直接打印数组 根据需求展示或存入数据库/*另存未新的EXCEL$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');$objWriter->save(str_replace('.php', '.xlsx', __FILE__));*/
2.2 导出文件write.php生成write.xlsx
导出文件我是直接使用的官方的代码 修改不大
增加了导出另存为xlsx和xls
<?phprequire_once './PHPExcel.php';// Create new PHPExcel object$objPHPExcel = new PHPExcel();// Set document properties$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->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");// Add some data$objPHPExcel->setActiveSheetIndex(0);$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Firstname:')->setCellValue('A2', 'Lastname:')->setCellValue('A3', 'Fullname:')->setCellValue('B1', 'Maarten')->setCellValue('B2', 'Balliauw')->setCellValue('B3', '=B1 & " " & B2');// Define named ranges$objPHPExcel->addNamedRange( new PHPExcel_NamedRange('PersonName', $objPHPExcel->getActiveSheet(), 'B1') );$objPHPExcel->addNamedRange( new PHPExcel_NamedRange('PersonLN', $objPHPExcel->getActiveSheet(), 'B2') );// Rename named ranges$objPHPExcel->getNamedRange('PersonName')->setName('PersonFN');// Rename worksheet$objPHPExcel->getActiveSheet()->setTitle('Person');// Create a new worksheet, after the default sheet$objPHPExcel->createSheet();// Add some data to the second sheet, resembling some different data types$objPHPExcel->setActiveSheetIndex(1);$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Firstname:')->setCellValue('A2', 'Lastname:')->setCellValue('A3', 'Fullname:')->setCellValue('B1', '=PersonFN')->setCellValue('B2', '=PersonLN')->setCellValue('B3', '=PersonFN & " " & PersonLN');// Rename worksheet$objPHPExcel->getActiveSheet()->setTitle('Person (cloned)');// Set active sheet index to the first sheet, so Excel opens this as the first sheet$objPHPExcel->setActiveSheetIndex(0);//直接保存文件// Save Excel 2007 file$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');$objWriter->save(str_replace('.php', '.xlsx', __FILE__));/*//导出另存为-Excel2007// Redirect output to a client’s web browser (Excel2007)header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');header('Content-Disposition: attachment;filename="test.xlsx"');header('Cache-Control: max-age=0');$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');$objWriter->save('php://output');*///导出另存为-Excel5// Redirect output to a client’s web browser (Excel5)header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="test.xls"');header('Cache-Control: max-age=0');$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter->save('php://output');
下载地址:http://download.csdn.net/detail/slyjit/9834441
0 0
- PHPEXCEL精简版之导出导入
- phpexcel导入导出
- PHPExcel导入导出excel
- laravel phpexcel 导入导出
- laravel phpexcel 导入导出
- PHPExcel导入导出文件
- PhpExcel 的导入导出
- PHPExcel 导入导出
- thinkphp5 phpexcel导出导入
- PHPExcel导出导入
- phpexcel导出导入
- PHPExcel导入导出Excel文件
- thinkphp PHPexcel 导入导出的
- phpexcel导出、导入excel文件
- PHPExcel导入导出功能实现
- php导出Excel php导入Excel PhpExcel使用说明 PhpExcel使用手册
- php导出Excel php导入Excel PhpExcel使用说明 PhpExcel使用手册
- PHP导出Excel php导入Excel PhpExcel使用说明 PhpExcel使用手册
- POJ 3276 Face The Right Way [反转 (贪心)] 《挑战程序设计竞赛》 3.2
- 网络爬虫之网页排重:语义指纹
- 模糊查询,concat和concat_ws的使用
- mybatis ---- 级联查询 一对多 (集合映射)
- Java map 详解
- PHPEXCEL精简版之导出导入
- 写出兼容各大邮箱及适配移动设备的邮件模板
- java float保留多位小数
- Android String格式化 %1$s %1$d
- Apple Mach-O Linker Error-iOS
- 线段树求区间最大值+区间更新+区间求和+lazy标记
- linux TCP_NODELAY 未定义
- ajax轮询
- FFmpeg -strict -2 参数详解