您现在的位置是:首页 > 文章详情文章详情

C#将读取的到EXCEL转换为DataTable

会飞的猪 2017-11-24 1046人已围观

简介白码驿站是一个面向开发者的知识共享社区,专注于为开发者打造一个纯净的技术交流社区(源码下载,免费在线图片压缩,jquery插件,插件下载,JS/CSS在线压缩。)-白码驿站

接下来说一下如何将读取的到EXCEL转换为DataTable,需要引用NPOI插件,插件下载地址:NPOI组件.rar

接下来就是代码的实现了, 

                                        
        /// <summary>
        /// 将excel转换为datatable
        /// </summary>
        /// <param name="filePaht">文件路径</param>
        /// <param name="startRow">读取数据的起始行</param>
        /// <returns>DataTable</returns>
        public DataTable ExcelToDataTable(string filePaht, int startRow)
        {
            //声明一个变量
            ISheet sheet = null;
            DataTable data = new DataTable();
            //int startRow = 3;
            try
            {
                //读取excel文件
                FileStream fs = new FileStream(filePaht, FileMode.Open, FileAccess.Read);
                HSSFWorkbook workbook = new HSSFWorkbook(fs);
                //读取excel的第一个sheet页
                sheet = workbook.GetSheetAt(0);
                if (sheet != null)
                {
                    //起始行
                    IRow firstRow = sheet.GetRow(startRow);
                    int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数
                    //循环添加列
                    for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                    {
                        //添加列
                        DataColumn column = new DataColumn(firstRow.GetCell(i).StringCellValue + "_" + i);
                        data.Columns.Add(column);
                    }
                    //最后一列的标号
                    int rowCount = sheet.LastRowNum;
                    for (int i = startRow; i <= rowCount; ++i)
                    {
                        IRow row = sheet.GetRow(i);
                        if (row == null) continue; //没有数据的行默认是null       

                        //创建行
                        DataRow dataRow = data.NewRow();
                        int index = 0;
                        for (int j = row.FirstCellNum; j < cellCount; ++j)
                        {
                            //填充列
                            dataRow[index] = row.GetCell(j).ToString();
                            index++;
                        }
                        //填充行
                        data.Rows.Add(dataRow);
                    }
                }
                return data;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: " + ex.Message);
                return null;
            }
        }
                                

调用:

                                        
DataTable dt = ExcelToDataTable(路径,数据的起始行);
                                


Tags: C# 、 FTP

很赞哦! (0)

评 论

系统处理中...