如何处理Excel空行问题
在操作excel的时候, 可能会出现很多的无效数据行. 下面是一个我的简单处理方式
public static bool DataSetToExcel(DataSet dataSet, string fileName)
{
//建立Excel对象
var excel = new Microsoft.Office.Interop.Excel.Application();
var objBook = excel.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
excel.Visible = false;
var worksheet = (Microsoft.Office.Interop.Excel.Worksheet)objBook.Worksheets["data"];
DataTable dataTable = DT(dataSet.Tables);
int rowNumber = dataTable.Rows.Count;//不包括字段名
int columnNumber = dataTable.Columns.Count;
int colIndex = ;
int emptyBlockCount = ;
//生成字段名称
foreach (DataColumn col in dataTable.Columns)
{
colIndex++;
excel.Cells[, colIndex] = col.ColumnName;
}
for (int r = ; r < rowNumber; r++)
{
for (int c = ; c < columnNumber; c++)
{
worksheet.Cells[r + , c + ] = dataTable.Rows[r][c];
}
if (string.IsNullOrWhiteSpace(dataTable.Rows[r][].ToString()))
emptyBlockCount++;
// 如果有10个空行,跳过
if (emptyBlockCount > )
break;
} objBook.Save();
objBook.Close();
excel.Quit(); return true;
}
暴力的通过记录空行数量,进行抉择.
如果哪位有更好的方法,请不吝赐教.
excel在关闭的时候,可能会出现不能及时关闭的问题.
         [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
         static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
             int lpdwProcessId;
             GetWindowThreadProcessId(new IntPtr(excel.Hwnd), out lpdwProcessId);
             System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
通过Windows的系统函数,强制杀掉进程.
在操作excel的过程中,最好单独开一个线程来做这些事情.经过我的尝试.一个拥有200个有效单元格的excel,就需要30秒以上的时间来更新.
如果放在主线程中,基本就GG了.祝大家好运.
如何处理Excel空行问题的更多相关文章
- 在往oracle中插数据时,如何处理excel读取的时间空值
		//若从excel中读取的时间值为空值时,做如下转换 string YDKGSJ = string.Empty; if (dbdata.Rows[i]["约定开工时间"].ToSt ... 
- 【Python】如何处理Excel中的数据
		我们平时在做自动化测试的时候,可能会涉及到从表格中去读取或者存储数据,我们除了可以使用openpyxl来操作excel,当然也可以利用pandas来完成,这篇随笔只是我在学习过程中的简单记录,其他的功 ... 
- POI 解析excel 空行问题
		https://www.cnblogs.com/interdrp/p/4019583.html 
- NPOI读取excel 空行
		if (sheet.GetRow(i) != null) 每行判断一下,避免出错.真是蛋疼. 
- [NPOI2.0] 使用NPOI读取和导出Excel文件
		先来说下一直使用的 Microsoft.Office.Interop.Excel ,在系统正式使用时遇到的问题 1:Excel读取数据BUG 由于使用Microsoft.Office.Interop. ... 
- C# 操作Excel图形——绘制、读取、隐藏、删除图形
		简介 本篇文章将介绍C# 如何处理Excel图形相关的问题,包括以下内容要点: 1.绘制图形 1.1 绘制图形并添加文本到图形 1.2 添加图片到图形 1.3 设置图形阴影效果 1.4 设置图形透明度 ... 
- 一个由正则表达式引发的血案  vs2017使用rdlc实现批量打印  vs2017使用rdlc  [asp.net core 源码分析] 01 - Session  SignalR  sql for xml path用法  MemCahe  C# 操作Excel图形——绘制、读取、隐藏、删除图形   IOC,DIP,DI,IoC容器
		1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ... 
- NPOI读取Excel帮助类,支持xls与xlsx,实现公式解析,空行的处理
		NPOI读取Excel(2003或者2010)返回DataTable.支持公式解析,空行处理. /// <summary>读取excel /// 默认第一行为表头 /// </sum ... 
- NPOI解决由于excel删除数据导致空行读取问题
		1.解决问题思路一:申明判断是否空行变量用于判断是否空行,声明变量数组用于临时非空行数据,最后存于datatable中. /// <summary>读取excel, /// 默认第一行为表 ... 
随机推荐
- 九州动态ip的特色
			九州代理是一款高覆盖的换ip软件,范围可覆盖全国160多个城市.软件可用于游戏试玩.游戏挂机.营销.优化.文档分享.管理.问答推广.数据采集.点赞.增效回访.用户注册等.“九州代理”仅提供国内网络节点 ... 
- 使用junit和eclemma进行简单的代码测试
			1.Junit和Hamcrest的安装 可以在https://mvnrepository.com/上面下载所需要的Junit和Hamcrest的jar包,然后在项目中新建一个lib文件夹,将下载好的j ... 
- 第七次作业——numpy统计分布显示
			用np.random.normal()产生一个正态分布的随机数组,并显示出来. np.random.randn()产生一个正态分布的随机数组,并显示出来. 显示鸢尾花花瓣长度的正态分布图,曲线图,散点 ... 
- 【转】Linux的nm查看动态库和静态库的符号
			转自https://blog.csdn.net/qq_16683355/article/details/52297884 功能 列出.o..a..so中的符号信息,包括符号的值,符号类型及符号名称等. ... 
- listener介绍
			当Web 应用在Web 容器中运行时, Web 应用内部会不断地发生各种事件: 如Web 应用被启动.Web 应用被停止,用户session 开始.用户session 结束.用户请求到达等, 通常来说 ... 
- java基础知识—抽象和封装
			1.从现实中抽象出类的步骤: 1)找出它的种类--类名 2)找出它的属性--字段的名称 3)找出它的行为--方法名 2.抽象的原则:根据面向对象的思想抽象出类. 3.类图的好处:直观.容易理解. 4. ... 
- poj1947(树形背包)
			题目链接:http://poj.org/problem?id=1947 Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total ... 
- java富文本编辑器KindEditor
			在页面写一个编辑框: <textarea name="content" class="form-control" id="content&quo ... 
- DeepCTR专题:DeepFM论文学习和实现及感悟
			论文地址:https://arxiv.org/pdf/1703.04247.pdf CTR预估我们知道在比较多的应用场景下都有使用.如:搜索排序.推荐系统等都有广泛的应用.并且CTR具有极其重要的 地 ... 
- docker查看挂载目录Volume
			使用docker inspect命令查看container的volume信息,按照书本上面敲,发现一直报错: 使用命令如下: sudo docker inspect --format "{{ ... 
