C#怎么把EXCEL数据转换成DataTable
C#怎么把EXCEL数据转换成DataTable
今天小编给大家分享一下C#怎么把EXCEL数据转换成DataTable的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
C#实现EXCEL表格转DataTable
C#代码实现把Excel文件转化为DataTable,根据Excel的文件后缀名不同,用不同的方法来进行实现,下面通过根据Excel文件的两种后缀名(*.xlsx和*.xls)分别来实现。获取文件后缀名的方法是:Path.GetExtension(fileName)方法,通过引用:using System.IO;实现代码如下:(其中以下代码中出现的filename都是带盘符的绝对路径)
根据Excel文件的后缀名不同调用的主方法
privateDataTableFileToDataTable(stringfileName){DataTabledt=newDataTable();stringextendName=Path.GetExtension(fileName);//获取文件的后缀名switch(extendName.ToLower()){case".xls":dt=XlsToDataTable(fileName);break;case".xlsx":dt=XlsxToDataTable(fileName);break;default:break;}returndt;}
XlsToDataTable()
privateDataTableXlsToDataTable(stringfileName){DataTabledataTable=newDataTable();Streamstream=null;try{stream=File.OpenRead(fileName);HSSFWorkbookhssfworkbook=newHSSFWorkbook(stream);HSSFSheethssfsheet=(HSSFSheet)hssfworkbook.GetSheetAt(hssfworkbook.ActiveSheetIndex);HSSFRowhssfrow=(HSSFRow)hssfsheet.GetRow(0);intlastCellNum=(int)hssfrow.LastCellNum;for(inti=(int)hssfrow.FirstCellNum;i<lastCellNum;i++){DataColumncolumn=newDataColumn(hssfrow.GetCell(i).StringCellValue);dataTable.Columns.Add(column);}dataTable.TableName=hssfsheet.SheetName;intlastRowNum=hssfsheet.LastRowNum;//列名后,从TABLE第二行开始进行填充数据for(inti=hssfsheet.FirstRowNum+1;i<hssfsheet.LastRowNum;i++)//{HSSFRowhssfrow2=(HSSFRow)hssfsheet.GetRow(i);DataRowdataRow=dataTable.NewRow();for(intj=(int)hssfrow2.FirstCellNum;j<lastCellNum;j++)//{dataRow[j]=hssfrow2.GetCell(j);//}dataTable.Rows.Add(dataRow);}stream.Close();}catch(Exceptionex){ScriptManager.RegisterStartupScript(Page,GetType(),"alertForm","alert('XlstoDataTable:"+ex.Message+"');",true);}finally{if(stream!=null){stream.Close();}}returndataTable;}
XlsxToDataTable()
publicDataTableXlsxToDataTable(stringvFilePath){DataTabledataTable=newDataTable();try{SLDocumentsldocument=newSLDocument(vFilePath);dataTable.TableName=sldocument.GetSheetNames()[0];SLWorksheetStatisticsworksheetStatistics=sldocument.GetWorksheetStatistics();intstartColumnIndex=worksheetStatistics.StartColumnIndex;intendColumnIndex=worksheetStatistics.EndColumnIndex;intstartRowIndex=worksheetStatistics.StartRowIndex;intendRowIndex=worksheetStatistics.EndRowIndex;for(inti=startColumnIndex;i<=endColumnIndex;i++){SLRstTypecellValueAsRstType=sldocument.GetCellValueAsRstType(1,i);dataTable.Columns.Add(newDataColumn(cellValueAsRstType.GetText(),typeof(string)));}for(intj=startRowIndex+1;j<=endRowIndex;j++){DataRowdataRow=dataTable.NewRow();for(inti=startColumnIndex;i<=endColumnIndex;i++){dataRow[i-1]=sldocument.GetCellValueAsString(j,i);}dataTable.Rows.Add(dataRow);}}catch(Exceptionex){thrownewException("XlsxtoDataTable:\n"+ex.Message);}returndataTable;}
以上就是“C#怎么把EXCEL数据转换成DataTable”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。
推荐阅读
-
int取整是向上还是向下(excel int用法)
excelint用法?Excel取整函数要注意有几类,分别为不保留2位小数的只可以保留整数部分的取整函数、四舍五入的取整函数、取...
-
excel判断错误值的函数(excel 2010常见错误值)
excel2010常见错误值?最常见的一种的错误值包括#n/a,#div0。excel中怎样避免出现错误值?在EXCEL之中,无...
-
excel(包括横向和纵向)(添加右键查询功能 excel中如何多条件查找)
excel中如何多条件查找,包括横向和纵向?1、简单的方法然后打开excel,然后把全选数据【A列】-直接点击【数据】菜单。2、而...
-
python(excel 提取数据写入新表 python导入excel数据找不到工作簿)
python导入excel数据找不到工作簿?我可以导入数据后找不到工作,不是因为他的工作没有被转移。什么软件可提取并合并Exce...
-
win10excel表文件怎么随意拖动(excel 单元格如何同时向下向右拖拽)
excel单元格如何同时向下向右拖拽?把excel单元格内容向外往右移有两方法/步骤::方法一、把左侧单元格的内容图片文件夹到右...
-
excel快速合并居中快捷键是什么(80个Excel键盘快捷键大全)
在使用Excel时了解并使用键盘快捷键是帮助您每天节省大量时间的基本Excel技能之一。您可以在Excel中使用500多个键盘快捷...
-
透视表excel透视表怎么做(数据透视表是干嘛的)
工作中经常要对物品进行进销存管理,今天分享一个简易的进销存管理,首先我们在有原始数据表,必备的几列数据如下所示:在类型字段中,我们...
-
复购率怎么算(excel复购率计算公式)
顾名思义,复购就是用户第二次之后的购买都是复购。新用户的盈利毕竟是有限的,只有用户的多次复购,才能够让企业获得长久的盈利和存活,这...
-
使用PHP输出CSV和EXCEL文件的简单方法
-
php中iconv转换成utf-8编码丢失数据的问题
最近在一个php项目中做了一个批量导入会员信息的功能。当初考虑主要有两种实现方法:第一种:用excel文件格式批量导入。ph...