如何处理Excel空行问题
2024-09-15 08:44:43
在操作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了.祝大家好运.
最新文章
- TPC-H
- CLion 2016.2.2 注册激活码
- CSS3-box-flex弹性盒布局
- wxPython简单入门
- 关于TCP传输速率的测量方法
- IOS开发中AVFoundation中AVAudioPlayer的使用
- Bash内置命令
- webpack-dev-server报错
- VIM 与 系统剪切版
- Python全局解释器锁 -- GIL
- 第 14 章 结构和其他数据形式(names)
- vue中的this指向问题
- 前端如何使用easy-mock模拟接口
- Linux-文件目录命令
- 树莓派3B+学习笔记:7、挂载exfat格式U盘
- java实现 数组中两个元素相加等于指定数的所有组合
- I/O完成端口(IOCP)
- jQuery实现轮播切换以及将其封装成插件(2)
- [转]springmvc常用注解标签详解
- Mysql数据库操作语句总结(一)