C#读取Excel转为DataTable
2024-10-03 23:47:02
需要的Dll: NPOI.OOXML.dll https://files.cnblogs.com/files/CityOfThousandFires/NPOI.dl.rar
/// <summary>
/// Excel->DataTable
/// </summary>
/// <param name="filePath">Excel文件路径</param>
public static DataTable ReadExcel(string filePath)
{
IWorkbook iwkX;
using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
iwkX = WorkbookFactory.Create(fs);
fs.Close();
}
//sheet
DataTable dt = new DataTable();
for (int h = 0; h < iwkX.NumberOfSheets; h++)
{
ISheet sheet = iwkX.GetSheetAt(h);
var rows = sheet.GetRowEnumerator();
bool isMove = rows.MoveNext();
//循环sheet
if (isMove)
{
var Cols = (IRow)rows.Current;
dt.TableName = sheet.SheetName;
for (int i = 0; i < Cols.LastCellNum; i++)
{
string str = Cols.GetCell(i).ToString();
dt.Columns.Add(Cols.GetCell(i).ToString());
}
while (rows.MoveNext())
{
var row = (IRow)rows.Current;
var dr = dt.NewRow();
for (int i = 0; i < row.LastCellNum; i++)
{
var cell = row.GetCell(i);
if (cell == null)
{
dr[i] = "";
}
else
{
string strdr = cell.ToString();
dr[i] = cell.ToString();
}
}
dt.Rows.Add(dr);
}
}
} return dt;
}
最新文章
- Android中的多线程断点下载
- xml引用实体dtd不能成功的问题
- stdcall, cdecl, pascal 区别(转载)
- enmo_day_05
- web classpath 路径说明
- webbrowser代理c#代码实现
- 为Windows 7的winsxs目录瘦身,谨慎。
- poj 3666 Making the Grade(dp)
- QDataStream类参考(串行化数据,可设置低位高位,以及版本号),还有一个例子
- leetcode Minimum Depth of Binary Tree python
- Regex阅读笔记(二)之环视
- 转:MySql的commit和rollback
- spring boot gradle build:bootRepackage failed
- CentOS 7 使用iptables防火墙
- 学号 20175329 2018-2019-3《Java程序设计》第九周学习总结
- zabbix 自带监控项报性能问题解决方法
- js--------1.时间
- codevs1735 方程的解数(meet in the middle)
- Python 类的初见
- 全网最详细Apache Kylin1.5安装(单节点)和测试案例