记录一个 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)与导出时,代码中指定的格式是否一致?不一致时,就会引发该问题。
记录一个 C# 导出 Excel 的坑的更多相关文章
- 【NodeJs】记录一个阿里云redis的坑
背景 一个风和日丽的下午,一个上线的大好日子,以为一切准备好,上个线也就三五分钟的事.但是... 图样图森破. 背景是这样的,项目需要,在阿里云开通redis,在项目中配好redis的连接字符串后,以 ...
- 一个关于导出excel模板的实例
1 首先jsp页面 点击模板下载,会自动下载模板excel,效果如下 让我们看源码: 1 jsp页面 <div class="tab-pane" id="profi ...
- 写一个通用的List集合导出excel的通用方法
前几天要做一个数据导出Excel 我就打算写一个通用的. 这样一来用的时候也方便,数据主要是通过Orm取的List.这样写一个通用的刚好. public static void ListToExcel ...
- MVC NPOI Linq导出Excel通用类
之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...
- 数据导出Excel,动态列
今天碰到一个需求,要求将用户回答的问卷及问题导出Excel表格,问卷对应的问题数量不一致,需要动态添加列表头,简单记录. 要导出Excel需要添加poi.jar包 用户-问卷实体(固定列): pack ...
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- .net实现一个简单的通用查询数据、导出Excel的网页
背景:临时提供一个简单的网页,供其他人浏览数据库(Oracel.MSSQL)的某些数据,并导出Excel.支持在配置文件中随时添加或修改sql. 实现:把sql语句等信息保存一个xml文件中,前端页面 ...
随机推荐
- Django JsonResponse 不自动设置 cookie 的解决方案
[背景] 目前在做一个前后端分离的 web 项目,后端使用的是 django 框架,所有的 API 都只返回 json :就在这个过程中遇到了一个问题,那就是对于所有的 JsonResponse dj ...
- Java开发桌面程序学习(六)——拖动文件获得文件路径
拖动获得文件路径 在windows软件中,很多软件都提供了拖动文件的打开文件的功能,JavaFx中也是有这功能,是通过监听器来实现的 监听器 setOnDragDetected(new EventHa ...
- Asp.Net Mvc自定义控件之树形结构数据生成表格 - WPF特工队内部资料
最近项目中有一个需求,将树形结构的数据,以表格的形式展示在页面中,下图是最终呈现效果: 源码: @{ Layout = null; } <!DOCTYPE html> <html&g ...
- 深入C#并行编程(2) -- 使用线程
一.可以使用位于命名空间System.Threading中的Thrad类开启线程: //声明一个新的线程 Thread myThread = new Thread(LoopFunc); //传递一个T ...
- go-运算符
算术运算符 ++,--只能放在变量后面,不能放在前面 独立使用 目的:更简洁 go语言不支持三元运算符 键盘输入 fmt.scanln 会在换行时扫描,所以最后一个条目必须换行或达到结束位置 fmt. ...
- 敏捷软件开发_设计原则<三>
敏捷软件开发_设计原则 单一职责原则(single responsibilities principle,SRP) 原理:一个类应该只有一个变化 分离职责:如果不耦合的职责那么很简单,如果两个职责耦合 ...
- 使用element-ui的el-menu导航选中后刷新页面保持当前选中
<el-menu :default-active=‘$route.path‘ :router=‘true‘ :unique-opened=‘true‘ :default-openeds=&quo ...
- AI反欺诈:千亿的蓝海,烫手的山芋|甲子光年
不久前,一家业界领先的机器学习公司告诉「甲子光年」:常有客户带着迫切的反欺诈需求主动找来,但是,我们不敢接. 难点何在? 作者|晕倒羊 编辑|甲小姐 设计|孙佳栋 生死欺诈 企业越急速发展,越容易产生 ...
- Python用Pandas读写Excel
Pandas是python的一个数据分析包,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷地处理数据的函数和方法. Pandas官方文档 ...
- [b0003] 总览:Hadoop 个人学习路线进展
3. Spark 搭建 过 1.1 搭建伪分布式2.0.1 ok 2016-10-23 耗时 2h ref [0006] Spark 2.0.1 伪分布式搭建练手 后续: 1.2 分布 ...