asp.net 要导入excel的文件表头在第二行,然后我在读取数据时候总是提示找不到列名,望不啬赐教 excelc#数据库 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么直接读取excel, 忽略第一行,根据第二行的值来获得字段对应的列,然后第三行开始读取数据? OLEDB只能把表当数据库表来读,使用的是select * from [sheet1],根本没法忽略第一行建议还是换种方式吧比如NPOINPOI好处很多,1.不依赖OFFICE(可以不装,也可以装WPS,什么版本都行,它只认文件,不依赖windows程序)2.兼容32位和64位系统3.可以直接读单元格,而不是只能整个表读出来 可以用免费版本的Spire.XLS, 也是不需要安装Office, excel 97 ~ 2013都支持。用免费版本的数据导入方法,Workbook workbook = new Workbook(); workbook.LoadFromFile(@"..\..\parts.xls",ExcelVersion.Version97to2003);//Initialize worksheetWorksheet sheet = workbook.Worksheets[0];DataTable dataTable = sheet.ExportDataTable(); 免费版本的Spire.XLS地址,http://www.e-iceblue.com/Introduce/excel-for-net-introduce.html 感谢解答,本人对代码操控excel了解甚少,还望明示…… using NPOI;using NPOI.HSSF.UserModel;using NPOI.SS.UserModel; public static DataTable Import(string strFileName) { DataTable dt = new DataTable(); HSSFWorkbook hssfworkbook; using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read)) { hssfworkbook = new HSSFWorkbook(file); } ISheet sheet = hssfworkbook.GetSheetAt(0); System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); IRow headerRow = sheet.GetRow(0); int cellCount = headerRow.LastCellNum; for (int j = 0; j < cellCount; j++) { ICell cell = headerRow.GetCell(j); dt.Columns.Add(cell.ToString()); } for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); DataRow dataRow = dt.NewRow(); for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null) dataRow[j] = row.GetCell(j).ToString(); } dt.Rows.Add(dataRow); } return dt; } private void button6_Click(object sender, EventArgs e) { DataTable dt=Import(@"test.xls");//读取xls到datatable中,再从DataTable取数据就容易了 dataGridView1.DataSource = dt; } 你循环execl 行的时候,可以从第二行开始 还是使用NPOI方便的,不会依赖office直接读取文件,读取单元格 编程的时候..规划有些混乱能给些建议吗... C#登录权限设置问题? 自己写的c#程序,时间久了就出错,事件查看器有显示日志,如何调试? 帮个忙看这个正则表达式怎么写。 C#传结构体给C++,类型转换,封送结构体,动态申请数组空间 请教,如何用C#调用directx show中的功能,实现USB视频流分辨率的切换了? vs13 c#64位系统下编的程序无法在32位系统运行 ★☆cookies★☆ 没有源文件,怎样将安装文件中的一幅图 改为想要的 Excel中为什么可以写入不可以读出 如何把C#开发的程序做成一个可执行文件让DELPHI程序调用? 为何不能保持登陆会话状态?
建议还是换种方式吧
比如NPOINPOI好处很多,
1.不依赖OFFICE(可以不装,也可以装WPS,什么版本都行,它只认文件,不依赖windows程序)
2.兼容32位和64位系统
3.可以直接读单元格,而不是只能整个表读出来
workbook.LoadFromFile(@"..\..\parts.xls",ExcelVersion.Version97to2003);
//Initialize worksheet
Worksheet sheet = workbook.Worksheets[0];DataTable dataTable = sheet.ExportDataTable();
using NPOI;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
public static DataTable Import(string strFileName)
{
DataTable dt = new DataTable(); HSSFWorkbook hssfworkbook;
using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new HSSFWorkbook(file);
}
ISheet sheet = hssfworkbook.GetSheetAt(0);
System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); IRow headerRow = sheet.GetRow(0);
int cellCount = headerRow.LastCellNum; for (int j = 0; j < cellCount; j++)
{
ICell cell = headerRow.GetCell(j);
dt.Columns.Add(cell.ToString());
} for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
{
IRow row = sheet.GetRow(i);
DataRow dataRow = dt.NewRow(); for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
} dt.Rows.Add(dataRow);
}
return dt;
} private void button6_Click(object sender, EventArgs e)
{
DataTable dt=Import(@"test.xls");//读取xls到datatable中,再从DataTable取数据就容易了 dataGridView1.DataSource = dt;
}
直接读取文件,
读取单元格