phpexcel如何读和写大于26列的excel3
来源:互联网 发布:上海模型店淘宝地址 编辑:程序博客网 时间:2024/05/17 01:54
主要运用到PHPExcel_Cell类的两个方法
1读取excel大于26列时.
PHPExcel_Cell::columnIndexFromString($highestColumm)://由列名转化为列索引数字 'A->0,Z->25'
1>计算出总列数
$highestColumm = $sheet->getHighestColumn(); // 获得最多的列数,返回列名的大写字母 如 'AB','F'等2>计算出列对应的索引
$end_index = PHPExcel_Cell::columnIndexFromString($highestColumm);//由列名转为列数('AB'->28)
$PHPExcel = $reader->load($file_path_root . '/' . $file_name);//文件路径加载文件名 $sheet = $PHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumm = $sheet->getHighestColumn(); // 取得总列数 $end_index = PHPExcel_Cell::columnIndexFromString($highestColumm);//由列名转为列数('AB'->28) $titles = array(); $content = array(); /** 循环读取每个单元格的数据 */ for ($row = 1; $row <= $highestRow; $row++) { for ($column = 0; $column < $end_index; $column++) { $col_name = PHPExcel_Cell::stringFromColumnIndex($column);//由列数反转列名(0->'A') $value = mb_convert_encoding($sheet->getCell($col_name . $row)->getValue(), 'gbk', 'utf8');//转码 if ($row == 1) { //获取表头 $titles[] = preg_replace('/\s/', '', $value); } else { if ($sheet->getCell($col_name . $row)->getDataType() == PHPExcel_Cell_DataType::TYPE_NUMERIC) { //数字类型时,三位精度标准来比较该数是否在0,1之间,转换为百分数,保留一位小数 if (bccomp(floatval($value), floatval('1'), 3) == -1 && bccomp(floatval($value), floatval('0'), 3) == 1) { $value = sprintf("%01.1f", $value * 100) . '%'; } } $content[$row][$column] = preg_replace('/\s/', '', $value); } } }ps:
上传excel时,如果没有读写权限,可以写到tmp目录下,这个目录下一般都是有读写权限的.
2写大于26列的excel
$title_col = PHPExcel_Cell::stringFromColumnIndex($k);//标题行列名,由列索引反转列名(0->'A')
</pre><pre name="code" class="php"><pre name="code" class="php">foreach($titles as $k =>$t){ $title_col = PHPExcel_Cell::stringFromColumnIndex($k);//标题行列名,由列索引反转列名(0->'A') $this->_objPHPExcel->getActiveSheet()->getColumnDimension($title_col)->setWidth(12); $this->_objPHPExcel->setActiveSheetIndex()->getStyle($title_col."1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $this->_objPHPExcel->getActiveSheet()->setCellValue($title_col."1",iconv('GBK','UTF-8//IGNORE',$t));//标题行}
3读取excel百分号时自动转化为了小数
处理单元格数据时,如果有百分号小数会自动转为小数,处理时需要判断单元格数据类型,因为初步认定只有百分数是小数,其余各列不存在小数.故处理结果:
判断数据类型为数字,其余几种类型都在 PHPExcel_Cell_DataType类中:
/* Data types */ const TYPE_STRING2 = 'str'; const TYPE_STRING = 's'; const TYPE_FORMULA = 'f'; const TYPE_NUMERIC = 'n'; const TYPE_BOOL = 'b'; const TYPE_NULL = 'null'; const TYPE_INLINE = 'inlineStr'; const TYPE_ERROR = 'e';
if ($sheet->getCell($col_name . $row)->getDataType() == PHPExcel_Cell_DataType::TYPE_NUMERIC) { //数字类型时,三位精度标准来比较该数是否在0,1之间,转换为百分数,保留一位小数 if (bccomp(floatval($value), floatval('1'), 3) == -1 && bccomp(floatval($value), floatval('0'), 3) == 1) { $value = sprintf("%01.1f", $value * 100) . '%'; }}
判断浮点数是否在0-1之间(三位精度),然后组合成百分数即可:
$value = sprintf("%01.1f", $value * 100) . '%';
0 0
- phpexcel如何读和写大于26列的excel3
- PHPexcel导入导出超过26列的解决方法
- PB读和写大于32K(32765B)数据
- phpexcel导出超过26列解决方案
- php利用phpexcel插件实现数据的导入和导出(支持csv\xls\xlsx格式和超过26个字段列)
- python如何筛选数据集中列中value长度大于20的数据集
- 读取excel大于Z列的数据
- bootstrap列数大于12的解决办法
- 多项式大于和渐进大于的区别
- phpexcel导入导出excel,并解决超出26列出现的错误
- VB写串口程序时如何发送大于128的字符
- [VB.NET]如何在DataGridView中实现多列排序?大于2列的,可以有很多列的排序?(急)
- Caused by: java.sql.BatchUpdateException: ORA-01438: 值大于为此列指定的允许精度如何解决
- 如何取得Memo的行和列
- MyBatis框架的搭建和基本的写法事列
- mysql中大于等于某个年月,小于等于当前年月之间的所有年月的语句如何写呢
- PHPExcel的使用方法和代码示例
- CocoaPods安装和使用--(版本依赖写的特别的清楚。。大于和小于等版本号的写法)
- UITableView的区头(不可滑动)和表头之分
- OC结构体
- leetcode | binary-tree-inorder-traversal
- 数据结构 - 简单的顺序表结构
- cocosPods下载第三方库使用
- phpexcel如何读和写大于26列的excel3
- 当我开发需要时,我经常去的一些网站。给大家分享。也算自己做个小笔记
- 快速排序
- 【Python】字典创建与操作
- eclipse执行远程调试代码
- shiro什么时候会进入doGetAuthorizationInfo(PrincipalCollection principals)
- CEO应向软件工程师学习的7个技能
- U盘fedora无法启动
- 第三讲--SQL语句硬解析和软解析