excel文件类型:
- xls 是excel5
- xlsx是excel2007
PHP合并单元格方法
$objPHPExcel=new PHPExcel();//实例化PHPExcel类, 等同于在桌面上新建一个excel
$objSheet=$objPHPExcel->getActiveSheet();//获得当前活动单元格
$objSheet->getDefaultStyle()->getAlignment()->
setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)
->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//设置excel文件默认水平垂直方向居中
$objSheet->mergeCells("A2:"B2");//合并单元格
设置字体行高
$objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微软雅黑");//设置默认字体大小和格式
$objSheet->getStyle("A2:Z2")->getFont()->setSize(20)->setBold(true);//设置第二行字体大小和加粗
$objSheet->getStyle("A3:Z3")->getFont()->setSize(16)->setBold(true);//设置第三行字体大小和加粗
$objSheet->getDefaultRowDimension()->setRowHeight(30);//设置默认行高
$objSheet->getRowDimension(2)->setRowHeight(50);//设置第二行行高
$objSheet->getRowDimension(3)->setRowHeight(40);//设置第三行行高
添加背景色和边框
/**
**获取边框样式代码
**/
function getBorderStyle($color){
$styleArray = array(
'borders' => array(
'outline' => array(
'style' => PHPExcel_Style_Border::BORDER_THICK,
'color' => array('rgb' => $color),
),
),
);
return $styleArray;
}
$objSheet->mergeCells("A2:B2");//合并的单元格
$objSheet->getStyle("A2:B2")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('c1b644');
//填充背景颜色
$gradeBorder=getBorderStyle("c144b1");//获取边框样式代码
$objSheet->getStyle("A2:B2")->applyFromArray($gradeBorder);//设置的边框
设置自动换行
$objSheet->getStyle("A")->getAlignment()->setWrapText(true);//设置文字自动换行
$objSheet->setCellValue("A4","姓名\n换行")->setCellValue("B4","分数");
//字符里出现\n可以自动换行
设置列的数据格式
$objSheet->getStyle("B")->
getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
//设置某列单元格格式为文本格式 ,在添加整数型数据之前 设置默认格式
foreach($info as $key=>$val){
$objSheet->setCellValue($nameIndex.$j,$val['username'])->setCellValue($scoreIndex.$j,$val['score']."21312321321321321321");//填充学生信息
//$objSheet->setCellValue($nameIndex.$j,$val['username'])->
//setCellValueExplicit("B".$j,"12321321321321312",PHPExcel_Cell_DataType::TYPE_STRING);
//填充数据信息,设置数据格式
$j++;
}
Excel导入案例
步骤:实例化Excel读取对象
加载Excel文件
分别为1.全部加载(全部的Sheet)。2.选择加载.(选择想要的sheet)
读取excel文件
分别为1.全部读取。2.逐行读取。
<?php
header("Content-Type:text/html;charset=utf-8");
$dir=dirname(__FILE__);//找到当前脚本所在路径
require $dir."/PHPExcel/PHPExcel/IOFactory.php";//引入读取excel的类文件
$filename=$dir."/export_1.xls";
$objPHPExcel=PHPExcel_IOFactory->load($filename);//加载全部的Sheet
加载全部sheet数据方法
$objPHPExcel=$objReader->load($filename);//加载文件
$sheetCount=$objPHPExcel->getSheetCount();//获取excel文件里有多少个sheet
for($i=0;$i<$sheetCount;$i++){
$data=$objPHPExcel->getSheet($i)->toArray();
//读取每个sheet里的数据 全部放入到数组中
print_r($data);
}
选择sheet数据方法
foreach($objPHPExcel->getWorksheetIterator() as $sheet){//循环取sheet
//迭代的方法一个一个的去读sheet
foreach($sheet->getRowIterator() as $row){//逐行处理
if($row->getRowIndex()<2){
//getRowIndex获取当前行 如果为1就跳出 从第二行开始
continue;
}
foreach($row->getCellIterator() as $cell){//逐列读取
$data=$cell->getValue();//获取单元格数据
echo $data." ";
}
echo '<br/>';
}
echo '<br/>';
}
PHPExcel获取类型
$fileType=PHPExcel_IOFactory::identify($filename);//自动获取文件的类型提供给phpexcel用
$objReader=PHPExcel_IOFactory::createReader($fileType);//获取文件读取操作对象
加载指定Sheet
//加载指定Sheet
$sheetName=array("2年级","3年级");
$objReader->setLoadSheetsOnly($sheetName);//只加载指定的sheet 可以为数组,也可字符串
$objPHPExcel=$objReader->load($filename);//加载文件
THINKPHP5.1导入
composer
类库 "phpoffice/phpspreadsheet": "^1.3",
/**
* @param Request $request
* @throws \PhpOffice\PhpSpreadsheet\Exception
* @throws \PhpOffice\PhpSpreadsheet\Reader\Exception
*/
public function import_excel(Request $request)
{
$file = $request->file('import');
$path = PUBLIC_PATH . '/Public/Uploads/office/';
$inputFile = $file->move($path, date('YmdHis'));
$inputFileName = $path . $inputFile->getFilename();
$inputFileType = IOFactory::identify($inputFileName);
$reader = IOFactory::createReader($inputFileType);
$reader->setLoadSheetsOnly(0);
$spreadsheet = $reader->load($inputFileName);
$data = [];
$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
foreach ($sheetData as $k => $v) {
if ($k == 1) {
continue;
}
if (empty($v['A'])) {
continue;
}
// $data['name'] = $spreadsheet->getActiveSheet()->getCell("A" . $k)->getValue();
$data['name'] = $v['A'];
$data['sex'] = $v['B'];
$data['xueli'] = $v['C'];
$data['gongsi'] = $v['D'];
$data['xinzi'] = $v['E'];
$data['zhiwei'] = $v['F'];
$data['time'] = date('Y-m', strtotime($v['G']));
$data['city'] = "北京";
$data['fuli'] = "五险一金";
try {
Db::name('Jiuye')->insert($data);
} catch (\Exception $e) {
$this->error($e->getMessage());
}
}
@unlink($inputFileName);
$this->success('导入成功!');
}
具体内容、还需看官网文档,在tp5.1框架之前的示例估计现在应该过时了。