博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NPOI excel读取转datatabel excel日期格式处理
阅读量:5876 次
发布时间:2019-06-19

本文共 4434 字,大约阅读时间需要 14 分钟。

///         /// 将excel中的数据导入到DataTable中        ///         /// 第一行是否是DataTable的列名        /// 
返回的DataTable
public DataTable ExcelToDataTable(bool isFirstRowColumn) { ISheet sheet = null; IWorkbook workbook = null; DataTable data = new DataTable(); int startRow = 0; try { if (fileupload2.FileName.IndexOf(".xlsx") > 0) // 2007版本 workbook = new XSSFWorkbook(fileupload2.PostedFile.InputStream); else if (fileupload2.FileName.IndexOf(".xls") > 0) // 2003版本 workbook = new HSSFWorkbook(fileupload2.PostedFile.InputStream); sheet = workbook.GetSheetAt(0); if (sheet != null) { IRow firstRow = sheet.GetRow(0); int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数 if (isFirstRowColumn) { for (int i = firstRow.FirstCellNum; i < cellCount; ++i) { ICell cell = firstRow.GetCell(i); if (cell != null) { string cellValue = cell.StringCellValue; if (!string.IsNullOrEmpty(cellValue)) { DataColumn column = new DataColumn(cellValue); data.Columns.Add(column); } } } startRow = sheet.FirstRowNum + 1; } else { startRow = sheet.FirstRowNum; } //最后一列的标号 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(); for (int j = row.FirstCellNum; j < cellCount; ++j) { if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null dataRow[j] = row.GetCell(j).ToString(); if (row.GetCell(j) != null&&row.GetCell(j).CellType == CellType.Numeric) { //NPOI中数字和日期都是NUMERIC类型的,这里对其进行判断是否是日期类型 if (HSSFDateUtil.IsCellDateFormatted(row.GetCell(j)))//日期类型 { dataRow[j] = row.GetCell(j).DateCellValue; } } } data.Rows.Add(dataRow); } } return data; } catch (Exception ex) { LogNet.info("Exception: " + ex.ToString()); return null; } }

 批量插入

//使用SqlBulkCopy将DataTable中的数据批量插入数据库中           ///            /// 注意:DataTable中的列需要与数据库表中的列完全一致。         /// 已自测可用。         ///            /// 数据库连接串         /// 数据库中对应的表名           /// 数据集           public static void SqlBulkCopyInsert(string conStr, string strTableName, DataTable dtData)         {             try             {                 using (SqlBulkCopy sqlRevdBulkCopy = new SqlBulkCopy(conStr))//引用SqlBulkCopy                   {                     sqlRevdBulkCopy.DestinationTableName = strTableName;//数据库中对应的表名                       sqlRevdBulkCopy.NotifyAfter = dtData.Rows.Count;//有几行数据                      sqlRevdBulkCopy.ColumnMappings.Add("id", "id");                    sqlRevdBulkCopy.ColumnMappings.Add("pay_no", "pay_no");                    sqlRevdBulkCopy.ColumnMappings.Add("pay_money", "pay_money");                    sqlRevdBulkCopy.ColumnMappings.Add("pay_time", "pay_time");                    sqlRevdBulkCopy.WriteToServer(dtData);//数据导入数据库                       sqlRevdBulkCopy.Close();//关闭连接                   }             }             catch (Exception ex)             {                LogNet.info(ex.ToString());             }         }

 

转载于:https://www.cnblogs.com/lxy6/p/10319532.html

你可能感兴趣的文章
007-Shell test 命令,[],[[]]
查看>>
关于Linux系统使用遇到的问题-1:vi 打开只读(readonly)文件如何退出保存?
查看>>
pandas 按照某一列进行排序
查看>>
在WPF中如何使用RelativeSource绑定
查看>>
Map的深浅拷贝的探究
查看>>
XSLT语法 在.net中使用XSLT转换xml文档示例
查看>>
如何将lotus 通讯簿导入到outlook 2003中
查看>>
WinForm 应用程序中开启新的进程及控制
查看>>
前端工程师的职业发展路线在哪?
查看>>
IOS 内存警告 Memory warning level
查看>>
[转]PAC Manager: Ubuntu 上强大的 SSH 帐号管理工具,可取代 SecureCRT_Miracle_百度空间...
查看>>
顺序容器 (2)string类型操作
查看>>
转载:我最近的研究成果(IGeometry.Project and IGeometry.SpatialReference)
查看>>
提示框
查看>>
HDOJ1233 畅通工程之一(最小生成树-Kruscal)
查看>>
another app is currently holding the yum lock;waiting for it to exit
查看>>
Android-----notifyDataSetChanged
查看>>
IE调试网页之六:使用 F12 开发人员工具调试 HTML 和 CSS (Windows)
查看>>
jquery循环获取table中input的值,要求一行一行的读取组织成字符串 求代码
查看>>
Hello,World
查看>>