php做EXCEL数据导出导入开发的一些小问题
前两天刚刚做开发CRM系统项目,在做要做EXCEL导出导入功能,因为以前做.NET开发用的是NPOI,但可是没找到PHP版本的,所以就网搜找了个国外的开源PHPEXCEL ,
一开始只是做了简单的导入导出,还没有出现做什么问题,一切顺利(因为那是EXCEL的单元格都没有设置什么数据类型的情况下),
在做导入读取EXCEL数据时,而且单元格里的数据类型改成文本类型时,在PHPEXCEL读出来的是PHPExcel_RichText类型的,这类型使getValue()是不管用了,因为这时候getValue()返回的PHPExcel_RichText(下面是PHPExcel_RichText数据保存格式)是一个Object类型了,所以在搜入数据的时候肯定出错了。
PHPExcel_RichText Object
(
[_richTextElements:PHPExcel_RichText:private] => Array
(
[0] => PHPExcel_RichText_TextElement Object
(
[_text:PHPExcel_RichText_TextElement:private] => l
) [1] => PHPExcel_RichText_Run Object
(
[_font:PHPExcel_RichText_Run:private] => PHPExcel_Style_Font Object
(
[_name:protected] => Calibri
[_size:protected] => 11
[_bold:protected] =>
[_italic:protected] =>
[_superScript:protected] =>
[_subScript:protected] =>
[_underline:protected] => none
[_strikethrough:protected] =>
[_color:protected] => PHPExcel_Style_Color Object
(
[_argb:protected] => FF000000
[_parentPropertyName:protected] =>
[_isSupervisor:protected] =>
[_parent:protected] =>
) [_isSupervisor:protected] =>
[_parent:protected] =>
[colorIndex] => 8
) [_text:PHPExcel_RichText_TextElement:private] => isimin
) ) )
用var_dump()输出一看蒙了,不过也没关系,既然是PHPExcel_RichText类型的数据,经过查文档,发现该对象有getPlainText()方法获取单元格的值,这回笑了^_^
在这里要做个判断
if(getValue() instanceof \PHPExcel_RichText)
{
//处理PHPExcel_RichText读取
}else{
//直接读取getValue()
}
oK,注意有些网上用new PHPExcel_RichText($cell) 转换的,会出现 Call to undefined method PHPExcel_CachedObjectStorage_Memory::getStyle()这个错误的
这个是PHPExcel的一个BUG或是遗漏吧,这错误解决方案是:
在CacheBase.php中的PHPExcel_CachedObjectStorage_Memory加一个getStyle()方法,
public function getStyle($pCellCooldinate='A1')
{
return $this->_parent->getStyle($pCellCooldinate) ;
}
php做EXCEL数据导出导入开发的一些小问题的更多相关文章
- 循序渐进开发WinForm项目(5)--Excel数据的导入导出操作
随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
使用phpExcel实现Excel数据的导入导出(完全步骤) 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人 ...
- 利用PHPExcel 实现excel数据的导入导出(源码实现)
利用PHPExcel 实现excel数据的导入导出(源码实现) 在开发过程中,经常会遇到导入导出的需求,利用phpexcel类实现起来也是比较容易的,下面,我们一步一步实现 提前将phpexcel类下 ...
- 使用命令行将Excel数据表导入Mysql中的方法小结
从Excel数据表导入MySQL,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间 为了提高 ...
- 涂抹mysql笔记-数据导出导入
数据导出导入<>利用CSV存储引擎加载数据:CSV存储引擎基于CSV格式文件存储数据,CSV格式是纯文本格式的文件,以逗号分隔取值.CSV引擎表的所有列值不能为空.Excel可以直接打开有 ...
- Java实现Excel数据批量导入数据库
Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...
- MySQL数据导出导入【转】
MySQL基础 关于MySQL数据导出导入的文章,目的有二: 1.备忘 2.供开发人员测试 工具 mysqlmysqldump 应用举例 导出 导出全库备份到本地的目录 mysqldump -u$US ...
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...
随机推荐
- mycat读写分离
版本:mycat1.0 只需要读写分离的功能,分库分表的都不需要. 涉及到的配置文件: 1.conf/server.xml 主要配置的是mycat的用户名和密码,mycat的用户名和密码和mys ...
- SVN中update to revision与revert to revision的区别
假设我们有许多个版本,版本号分别是1-10 如果我们在7这里选择revert to this version那么7之后的8,9,10的操作都会被消除 如果在7选择revert changes from ...
- itoa函数的实现(不同进制)
2013-07-08 17:12:30 itoa函数相对于atoi函数,比较简单,还是要注意考虑的全面. 小结: 一下几点需要考虑: 对负数,要加上负号: 考虑不同进制,根据要求进行处理:对不同的进制 ...
- ubuntu12.04升级后找不到共享目录
备注:采用VMware-workstation 10 更新命令:sudo apt-get update 今天开始搭建Android开发环境,先升级系统,升级后发现windows和ubuntu共享的目录 ...
- IT国家重点实验室
软件工程国家重点实验室(武汉大学): http://www.sklse.whu.edu.cn/ 南京大学: http://keysoftlab.nju.edu.cn/ 水声技术国家重点实验室 http ...
- 通过移动的Mas接口发送短信
1. 首先,需要移动公司提供的用户名.密码.服务ID.接口Url等信息. 2. 将短信信息整理成XML格式的字符串,再转为byte数组,通过POST的方式,将短信发往Mas接口.需要引用"M ...
- Dapper连接Oracle
Dapper连接Oracle去年写过了篇博客,名字叫:让dapper支持Oracle 网址:http://www.cnblogs.com/ushou/archive/2012/09/28/270690 ...
- CSS sprites 技术
Css Sprites 技术逐渐流行,各大网站上都可以看到它的身影. 但从本质上,Css Sprites 只是 Css 技术的一个使用小窍门,初学者也能快速上手. Css Sprites 简单解释: ...
- OK335xS davinci mdio driver hacking
/******************************************************************************* * OK335xS davinci m ...
- (六)学习MVC之标签a提交页面
标签<a>如何做到与<input type="submit"/>一样有提交页面信息的效果? @using (Html.BeginForm("Log ...