记录一个 C# 导出 Excel 的坑
Ø 简介
其实该文章并没有什么技术含量,只是记录下个人心得。在以后有朋友遇到类似问题,可以借鉴下,或者遇到相同问题时的提供个参考方向。
也算我的一个经历吧,这个问题我花了足足一天多的时间才找到问题,解决问题。因为刚开始进公司,对项目不怎么熟,所以有点慢!话不多说,上正题:
1. 相关描述
1) 项目导出 Excel 还是采用比较原始的方式,对,就是我们大名鼎鼎的 Microsoft.Office.Interop.Excel.dll 程序集,使用包括以下对象:
Microsoft.Office.Interop.Excel.Application |
Microsoft.Office.Interop.Excel.Workbook |
Microsoft.Office.Interop.Excel.Worksheet |
2) 问题描述
可以正常导出,但是打开 Excel 文件时:
1. 有些单元格有数据,但是显示为空白
2. 会显示“受保护的视图”的警告
2. 解决办法
1) 首先说第一个问题
进过一番调试,发现是因为该单元格的数据(也就是字符串)的字节长度大于 255 bytes 时,就会出现显示空白的情况。如果小于 255 个字节,则正常显示。
2) 然后,忽略第一个问题,尝试解决第二个问题“受保护的视图”的警告
1. 经过,在网上找了一些导出 Excel 的代码,各种尝试发现,原来网上的代码导出并不会出现以上问题;
2. 好,问题可以断定,是我们导出的代码出问题了,再经过一番“代码分段执行法”(我找问题的一个方法)或者“代码替换执行”,最后将问题指向了下面这行代码:
workbook.SaveAs(filePath, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel7, m_objOpt, m_objOpt, m_objOpt, m_objOpt, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
这段代码没什么问题,主要是标红的这个参数。没错,就是这个参数导致了整个问题。
3. 以上这个参数表示导出为"Micorosoft Excel 5.0/95 工作薄(*.xls)" 格式的 Excel. 什么意思?其实我也不知道,应该是一个 Excel 内部版本号?
参考:https://www.cnblogs.com/mingjing/p/5955725.html
4. 该参数是一个枚举,后来了解到指定为 XlFileFormat.xlWorkbookNorma 即可,再次运行程序,导出 Excle, OK,没有了警告,长字符也正常显示了。
3. 友情提示
xls 表示适用于 Excel97-2003 的版本;
xlsx 则表示当前最新的工作簿后缀名,适用于 Excel2007及以上版本。
如果导出的 Excel 文件,在打开时报类似“格式不一致”的问题,则可以判断是否是因为文件后缀(如:*.xls)与导出时,代码中指定的格式是否一致?不一致时,就会引发该问题。
最新文章
- Shiro-HelloWord
- 处理xml c#
- Centos7上安装dnf-plugins-core
- c++ 中string用c输入输出
- 一款经典的jQuery slidizle 幻灯片
- c/c++运算顺序问题
- 使用socket.io开发简单群聊功能
- JS的十大经典算法排序
- JavaScript正则验证邮箱
- Tomcat-java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
- 测试stopwatch频率
- Java创建、重命名、删除文件和文件夹(转)
- 3-Dom
- C++风格写判断某年某月某日是一年的第几天
- (四十八)Quartz2D引擎进阶
- obj-c编程11:内存管理和ARC(自动引用计数)
- 为什么浏览器User Agent中都有个mozilla
- 直接借鉴的 ids拼接
- APP快速搭建框架
- Redis基本数据类型介绍笔记
热门文章
- python3报'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)解决方法
- RabbitMQ的交换器Exchange之direct(发布与订阅 完全匹配)
- JavaScript初探 四 (程序结构)
- Xamarin.Forms 移动开发
- mssql sqlserver 使用SSMS运行sql脚本的六种方法分享
- Python—五大基本语句
- 5-7 可视化库Seaborn-热度图绘制
- 爬虫---爬取b站小视频
- C++ 基础语法 快速复习笔记(1)
- 2019徐州网络赛 H.function