简单回顾NPOI导入导出excel文件
当前环境.net4.0
去官方下下载: NOPI官网
关于NOPI的详细,这里就不再介绍。
在项目中,我们只需引入 NPOI.dll 就可以了.
接下来................................................................
上代码......... ..........................................................
/// <summary>
/// 导出
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="filePath">导出地址</param>
public static void ExportExcel(DataTable dt, string filePath)
{
try
{ //创建文档
IWorkbook workbook = new HSSFWorkbook();
//创建表格
ISheet sheet = workbook.CreateSheet(dt.TableName) as NPOI.HSSF.UserModel.HSSFSheet;
//第0行合并单元格,并且插入标题
//sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, dt.Columns.Count));
//IRow row1 = sheet.CreateRow(0);
////row1.CreateCell(0).SetCellValue(dt.TableName);
//ICell col = row1.CreateCell(0);
//col.SetCellValue(dt.TableName);
//col.CellStyle.Alignment = HorizontalAlignment.Center;
//col.CellStyle.VerticalAlignment = VerticalAlignment.Center;
//col.CellStyle.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.Blue.Index; //从第一行获取和插入列名
IRow row = sheet.CreateRow();
for (int i = ; i < dt.Columns.Count; i++)
{
ICell cell = row.CreateCell(i);
cell.SetCellValue(dt.Columns[i].ColumnName);
} //从第二行中开始插入数据
int index = ;
foreach (DataRow rows in dt.Rows)
{
row = sheet.CreateRow(index);
foreach (DataColumn item in dt.Columns)
{
ICell cel= row.CreateCell(item.Ordinal);
cel.SetCellValue(rows[item].ToString()); } index++;
} MemoryStream ms = new MemoryStream();
workbook.Write(ms); using (FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate))
{
// workbook.Write(fileStream);
// fileStream.Flush(); byte[] bArr = ms.ToArray();
fileStream.Write(bArr, , bArr.Length);
fileStream.Flush(); }
workbook.Close();
}
catch (Exception ex)
{ throw ex;
}
}
具体使用方法如下:
数据是模拟数据..........
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable("学生表");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int)); for (int i = ; i <= ; i++)
{ DataRow row = dt.NewRow();
row["ID"] = i;
row["Name"] = "名字" + i;
row["Age"] = i;
dt.Rows.Add(row);
}
//导出
ExportExcel(dt, @"d:\xxx2.xls");
Console.WriteLine("OK");
Console.ReadKey();
}
接下来是导入方法。
/// <summary>
/// 导入
/// </summary>
/// <param name="filePath">excel路径</param>
/// <param name="sheetIndex">sheet索引,默认为第一个</param>
/// <returns></returns>
public static DataTable ImportExcel(string filePath, int sheetIndex=)
{
try
{
using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate))
{
DataTable dt = new DataTable();
IWorkbook workbook = new HSSFWorkbook(fs); // sheet索引,默认为第一个
ISheet sheet = workbook.GetSheetAt(sheetIndex); //读取第一行列名
foreach (ICell cels in sheet.GetRow(sheet.FirstRowNum).Cells)
{
dt.Columns.Add(cels.ToString());
} //第二行开始
for (int i = (sheet.FirstRowNum + ); i <= sheet.LastRowNum; i++)
{
IRow rows = sheet.GetRow(i);
DataRow dataRow = dt.NewRow(); //遍历每行每列的值
for (int j = rows.FirstCellNum; j < rows.LastCellNum; j++)
{
dataRow[j] = rows.GetCell(j).ToString();
} dt.Rows.Add(dataRow);
} workbook.Close(); return dt; }
}
catch (Exception ex)
{ throw ex;
} }
使用方法如下:
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable("学生表");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int)); for (int i = ; i <= ; i++)
{ DataRow row = dt.NewRow();
row["ID"] = i;
row["Name"] = "名字" + i;
row["Age"] = i;
dt.Rows.Add(row);
}
//导入并且返回DataTable,您可以选择用sqlbulkCopy批量插入数据库
var data= ImportExcel(@"d:\xxx2.xls");
Console.WriteLine("OK");
Console.ReadKey();
关于sqlbulkCopy批量插入数据库,效率还是挺高的,详情可以看我上一篇文章。
本文到此结束。
简单回顾NPOI导入导出excel文件的更多相关文章
- .Net core NPOI导入导出Excel
最近在想.net core NPOI 导入导出Excel,一开始感觉挺简单的,后来真的遇到很多坑.所以还是写一篇博客让其他人少走一些弯路,也方便忘记了再重温一遍.好了,多的不说,直接开始吧. 在.Ne ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- NPOI导入导出Excel
.net mvc利用NPOI导入导出excel 注意:如何导出的提交方式ajax导出是失效的! 解决方案是:js处理l两个表单的提交 代码: 第一步. 在页面里面加入2个隐藏的iframe, 如下 ...
- (C#)利用Aspose.Cells组件导入导出excel文件
Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...
- 【转】 (C#)利用Aspose.Cells组件导入导出excel文件
Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...
- ASP.NET Core导入导出Excel文件
ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...
- 导入导出Excel文件
搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包 : http:// ...
- C#,使用NPOI,导出excel文件
/// <summary> /// 导出excel文件 /// </summary> /// <param name="dt">Table表数据 ...
- .net利用NPOI导入导出Excel
NPOI在.net中的操作Excel 1.读取 using (FileStream stream = new FileStream(@"c:\客户资料.xls", FileMode ...
随机推荐
- .NET中那些所谓的新语法之一:自动属性、隐式类型、命名参数与自动初始化器
开篇:在日常的.NET开发学习中,我们往往会接触到一些较新的语法,它们相对以前的老语法相比,做了很多的改进,简化了很多繁杂的代码格式,也大大减少了我们这些菜鸟码农的代码量.但是,在开心欢乐之余,我们也 ...
- 你真的会用java replaceAll函数吗?
replace.replaceAll.replaceFirst这三个函数会java的同学估计都用过,笔者已经用了2年多,可是,我们真的懂他们吗? 概述一下他们三个的用法: · replace(Char ...
- spring快速入门(四)
一.在spring快速入门(三)的基础上,我们来了解BeanFactory及配置. Client package com.murong.client; import org.springframewo ...
- 蓄水池(Reservoir_sampling)抽样算法简记
摘要 1.适用场合 2.算法简介 3.代码例子 4.Spark RangePartitioner 中的应用(待补充) 内容 1.适用场合:从包含n个项目的集合S中选取k个样本,其中n为一很大或未知的数 ...
- Oracle 超长字符串分割劈分
Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大.... 下面,,,,直奔主题了: CREATE OR REPLACE FUNCTION splitstr(p_string IN clo ...
- ElasticSearch ik分词安装
1.下载对应版本的ES ik分词 https://github.com/medcl/elasticsearch-analysis-ik/releases 2.解压elasticsearch-analy ...
- JSP的基本语法
JSP的基本语法 一.JSP页面中的JAVA代码 二.JSP页面中的指令 三.JSP页面中的隐含对象(九大内置对象) 目录 一.JSP页面中的JAVA代码 JSP表达式(方便输出) JSP小脚本(完成 ...
- Ado.Net Destination 用法
Ado Net Destination Component 使用Ado net Connection manager,其Data Access Mode 只有一种, table or view,组件的 ...
- 实战MEF(4):搜索范围
在前面的文章中,几乎每个示例我们都会接触到扩展类的搜索位置,我们也不妨想一下,既然是自动扩展,它肯定会有一个或者多人可供查找的位置,不然MEF框架怎么知道哪里有扩展组件呢? 就像我们用导航系统去查找某 ...
- Spire.DOC生成表格测试
首先,很感谢Jack对我的信任,让我来写一个评测,在此对Jack说一声抱歉,由于本人愚钝,并且最近项目比较紧张,把评测这个事情脱了一个月之久,由于往后的日子可能更忙,所以今晚抽空只能只写了一个小程序来 ...