当前位置:首页 > Windows程序 > 正文

c#关于导入execl

2021-03-28 Windows程序

由于工作需要,经常要添加新的产品,涉及到数量多了就得考虑批量处理。

//此驱动对应的Execl格式为 xls        

string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties=‘Excel 8.0; HDR=YES; IMEX=1‘";

//此驱动对应的Execl格式为 xlsx     HDR=YES/No 有标题/没有标题     IMEX=0/1/2   写入/读取/写读皆可

//string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filenameurl + ";Extended Properties=‘Excel 12.0;HDR=Yes;IMEX=1;‘";

通过以上调用OleDb的方式,依旧有问题,主要是存在当某列前10几条的文件类型是数字,而其后数字上带有字母的话就无法读取到。即使设置此列为文本也无效,有些人说可修改注册表里面的值。但是我找注册表里面却没有那些节点,且这种方法要安装office才有效。挺多局限性。找资料看到前辈们推荐NPOI,,就找到官网学习了:

官网:

第一步,下载组件并导入NPOI.dll。

第二部,引用命名空间。using NPOI.HSSF.UserModel;   using NPOI.SS.UserModel;
第三步,说明工作簿对象: HSSFWorkbook hssfworkbook;

第四部,读取数据内容:

protected void Button1_Click(object sender, EventArgs e)    

{           //打开.xls文件         

using (FileStream fs = File.OpenRead(@"e:/*.xls"))       

{            

HSSFWorkbook wk = new HSSFWorkbook(fs);   //把xls文件中的数据写入wk中            

for (int i = 0; i < wk.NumberOfSheets; i++)  //NumberOfSheets是*.xls中总共的表数            

{               

ISheet sheet = wk.GetSheetAt(i);   //读取当前表数据                

for (int j = 0; j <= sheet.LastRowNum; j++)  //LastRowNum 是当前表的总行数                  

{                    

IRow row = sheet.GetRow(j);  //读取当前行数据                    

if (row != null)                    

{

for (int k = 0; k <= row.LastCellNum; k++)  //LastCellNum 是当前行的总列数                        

{

ICell cell = row.GetCell(k);  //当前表格                                                    

if (cell != null)   

{    //读取cell即单元格的值做进一步处理   

}

}

}              

}           

}      

}        

}

以上只是简单的读取到execl中的单元格的值,有待于进一步学习使用NPOI对文档进行操作处理。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69215.html