Excel的一点小事
2015-03-29 21:40
316 查看
今天策划同学报告程序里的触发器有bug,过去看了下日志,提示数据文档配置有问题。心想问题不大,修改下表格内容就可以了,当我看完数据表后,悲催的一天开始了。。。
我们项目模板数据使用的是json,但策划同学肯定更喜欢Excel,所以我们项目的配置文件生成流程是这样的:
Created with Raphaël 2.1.2StartExcel转换加载json
其中在Excel转json这步,我们将Excel文件生成json,同时自动生成配置文件类。
当前的问题发生在Excel转json的过程中json数据丢失了,由于这个工程各个项目组都在用,我怀疑是策划同学在填表的时候有特殊符号,导致在转换的过程中出了问题。但仔细检查后并没有问题。那唯一的问题只能是Excel转json的工程有bug。查看相关代码没有看出什么嫌疑。去Google查询Excel数据丢失问题,也没得到什么好的答案。
通过分析输出字段我发现通过转换后的字段长度都是255,无论字符串里是否包含特殊字符,排除掉特殊字符这条线索。然后将255关键字加上之后,Google立马给出了答案:
当数据驱动从Excel读取数据的时候,会从HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel这个地址读取变量TypeGuessRows来决定通过读取几行来判断数据类型,如果前8行没有超过255的字段,后面都按255长度来读。
解决方案岂不是显而易见,就是修改这个值,我们的数据表很大,所以我将TypeGuessRows修改为0,貌似世界清静了,但结果出乎意料,没有任何作用。查了非常多的文档,大家几乎都是用这种方式,包括微软官方文档。可是没有任何效果。
最终我让策划同学在我们的表类型说明行里填充超过255的字符,来当占用符,问题解决了。
通过这个问题,再次巩固了我对解决问题的几个认识:
1、用别人的库确实方便,但没有源代码但出了问题只能查看文档和google能告诉你怎么办了。
2、在遇到问题的时候,不选择优美但不确定的方案,而是采用实用的方案。
3、合理的实用搜索引擎,只有告诉Google正确的关键字,才能得到合适的答案。
[2]http://www.dotnetthoughts.net/text-truncated-to-255-characters-when-reading-from-excel-using-oledb/
我们项目模板数据使用的是json,但策划同学肯定更喜欢Excel,所以我们项目的配置文件生成流程是这样的:
Created with Raphaël 2.1.2StartExcel转换加载json
其中在Excel转json这步,我们将Excel文件生成json,同时自动生成配置文件类。
当前的问题发生在Excel转json的过程中json数据丢失了,由于这个工程各个项目组都在用,我怀疑是策划同学在填表的时候有特殊符号,导致在转换的过程中出了问题。但仔细检查后并没有问题。那唯一的问题只能是Excel转json的工程有bug。查看相关代码没有看出什么嫌疑。去Google查询Excel数据丢失问题,也没得到什么好的答案。
通过分析输出字段我发现通过转换后的字段长度都是255,无论字符串里是否包含特殊字符,排除掉特殊字符这条线索。然后将255关键字加上之后,Google立马给出了答案:
当数据驱动从Excel读取数据的时候,会从HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel这个地址读取变量TypeGuessRows来决定通过读取几行来判断数据类型,如果前8行没有超过255的字段,后面都按255长度来读。
解决方案岂不是显而易见,就是修改这个值,我们的数据表很大,所以我将TypeGuessRows修改为0,貌似世界清静了,但结果出乎意料,没有任何作用。查了非常多的文档,大家几乎都是用这种方式,包括微软官方文档。可是没有任何效果。
最终我让策划同学在我们的表类型说明行里填充超过255的字符,来当占用符,问题解决了。
通过这个问题,再次巩固了我对解决问题的几个认识:
1、用别人的库确实方便,但没有源代码但出了问题只能查看文档和google能告诉你怎么办了。
2、在遇到问题的时候,不选择优美但不确定的方案,而是采用实用的方案。
3、合理的实用搜索引擎,只有告诉Google正确的关键字,才能得到合适的答案。
参考资料
[1]http://support.microsoft.com/en-us/kb/839785[2]http://www.dotnetthoughts.net/text-truncated-to-255-characters-when-reading-from-excel-using-oledb/
相关文章推荐
- js控制excel一点小事
- Excel的一点小事
- Delphi使用server组件控制excel的一点经验
- c#写纯文本为Excel文件格式的一点技巧
- 关于POI和JXL处理Excel的一点使用心得
- iOS关于微信支付的一点小事
- 由海量数据想到的一点小事
- [学英语] 学文科就要这样,一点小事也要能说出很多道道
- U3D Time.time 一点小事
- Excel的一点知识!
- Excel 的一点小技巧
- 编码问题的一点小事
- PHP 导出Excel一点小经验 解决乱码问题.
- 在使用QThread的一点教训(QAxObject ,Excel)
- PHP 导出Excel一点小经验 解决乱码问题
- 学一点excel
- html表格导出Excel的一点经验心得(转载)
- PHP 导出Excel一点小经验:解决乱码问题
- excel导入数据库的一点小问题