日期:2014-05-17 浏览次数:20518 次
最近做项目,接触了几次PHPExcel,过程中遇到了几个问题,现对PHPExcel的一些常见用法和我遇到的问题及解决方法总结如下。(推荐还是要看一下PHPExcel官网的手册)
?
一、常见用法
??? 这个部分网站上有很多资料了,我这里不再一一罗列,只是将我用到的几个地方写了一下。
?
<?
//首先要导入phpexcel
require_once ($yourpath.'PHPExcel.php');
//创建phpexcel对象
$objPHPExcel = new PHPExcel ();
//设置属性
$objPHPExcel->getProperties ()->setCreator ( "Miss Yang" )
->setLastModifiedBy ( "Miss Yang" )
->setTitle ( "Office 2003 XLS Document" )
->setSubject ( "Office 2003 XLS Document" )
->setDescription ( "TrunkBow" )
->setKeywords ( "TrunkBow" )
->setCategory ( "TrunkBow" );
//设置当前的sheet索引,用于后续的内容操作。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//设置当前活动sheet的名称
$objActSheet->setTitle('Sheet1');
//设置单元格内容
$objActSheet->setCellValue('A1', '字符串内容'); // 字符串内容
$objActSheet->setCellValue('A2', 26); // 数值
$objActSheet->setCellValue('A3', true); // 布尔值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式
//显式指定内容类型
$objActSheet->setCellValueExplicit('A5','8757584',PHPExcel_Cell_DataType::TYPE_STRING);
//设置单元格格式
$objActSheet ->getStyle ('A1' )
->getFont ()
->getColor()
->setARGB(PHPExcel_Style_Color::COLOR_RED);
$objActSheet ->getStyle ('A1' )
->getFont ()
->setBold(true);
$objActSheet ->getStyle ('A')
->getNumberFormat()
->setFormatCode ( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
$objActSheet ->getColumnDimension ('A')
->setWidth(20);
$objActSheet ->getColumnDimension ('B')
->setAutoSize(true);
$activeSheet ->getColumnDimension('C')
->setVisible(false);
//生成下拉列表框
$list = "item1,item2,item3";
$objValidation1 = $activeSheet->getCell('A1')->getDataValidation();
$objValidation1->setType( PHPExcel_Cell_DataValidation::TYPE_LIST )
->setErrorStyle(PHPExcel_Cell_DataValidation::STYLE_INFORMATION )
->setAllowBlank(false)
->setShowInputMessage(true)
->setShowErrorMessage(true)
->setShowDropDown(true)
->setErrorTitle('输入的值有误')
->setError('您输入的值不在下拉框列表内.')
->setPromptTitle('下拉选择框')
->setPrompt('请从下拉框中选择您需要的值!')
->setFormula1('"' . $list . '"');
//下载输出
$filename = "testphp.xls";
$filename = iconv("utf-8", 'gbk', $filename);
$objWriter = PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' );
header ( 'Content-Type: application/vnd.ms-excel' );
header ( "Content-Disposition: attachment;filename=$filename" );
header ( 'Cache-Control: max-age=0' );
$objWriter->save ( 'php://output' );
exit(0);
?
?
?
二、问题总结
1.单元格内容为长数字的,输出时,总是转成科学计数法。
?
??? 这个问题网上也有不少资料提到的,大多是说要修改几个地方的源码。但是我一直没找到对应的源码在哪里,可能是版本不同的原因。我是这样解决的: