当前环境.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文件的更多相关文章

  1. .Net core NPOI导入导出Excel

    最近在想.net core NPOI 导入导出Excel,一开始感觉挺简单的,后来真的遇到很多坑.所以还是写一篇博客让其他人少走一些弯路,也方便忘记了再重温一遍.好了,多的不说,直接开始吧. 在.Ne ...

  2. NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中

    以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...

  3. NPOI导入导出Excel

    .net mvc利用NPOI导入导出excel 注意:如何导出的提交方式ajax导出是失效的! 解决方案是:js处理l两个表单的提交  代码:  第一步. 在页面里面加入2个隐藏的iframe, 如下 ...

  4. (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  5. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  6. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  7. 导入导出Excel文件

    搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包  :  http:// ...

  8. C#,使用NPOI,导出excel文件

    /// <summary> /// 导出excel文件 /// </summary> /// <param name="dt">Table表数据 ...

  9. .net利用NPOI导入导出Excel

    NPOI在.net中的操作Excel 1.读取 using (FileStream stream = new FileStream(@"c:\客户资料.xls", FileMode ...

随机推荐

  1. NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例

    一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...

  2. Angular遇上CoffeeScript - NgComponent封装

    CoffeeScript是基于JavaScript的一门扩展小巧语言,它需要编译成JavaScript,然后再运行与浏览器或者Nodejs平台.JavaScript由于商业原因10天时间就匆忙诞生,所 ...

  3. 我为什么很烦在DB服务器上安装杀毒软件

    常见的数据库连接问题无外乎是在数据库服务器本地可以连接SQL Server,但通过其他服务器就不可以连接.但这次我却碰到了相反的情况,在服务器本地无法通过IP/实例名连接,但从其他服务器却可以.而且每 ...

  4. Azure PowerShell (8) 使用PowerShell设置Azure负载均衡器规则

    <Windows Azure Platform 系列文章目录> 注意:如果Azure面对的客户只是企业级客户,企业级客户使用NAT设备访问Internet的话,因为多个客户端使用相同的So ...

  5. ASP.NET MVC 从零开始 - Web.config

    这篇文章是从我的 github 博客 http://lxconan.github.io 导入的. 在上一篇中,我们从零开始创建了一个非常简单的 ASP.NET MVC 应用程序.接下来,你是不是期望我 ...

  6. Tomcat调优及JMX监控

    Tomcat调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS release 6.5 ( ...

  7. windows自带记事本导致文本文件(UTF-8编码)开头三个字符乱码问题

    在windows平台下,使用系统的记事本以UTF-8编码格式存储了一个文本文件,但是由于Microsoft开发记事本的团队使用了一个非常怪异的行为来保存UTF-8编码的文件,它们自作聪明地在每个文件开 ...

  8. 前端学PHP之函数

    × 目录 [1]函数定义 [2]函数参数[3]返回值[4]变量函数[5]回调函数[6]递归函数[7]加载函数[8]匿名函数 前面的话 PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数 ...

  9. T-Sql学习系列完结

    T-Sql(一)简单语法 T-Sql(二)事务(Transaction) T-Sql(三)存储过程(Procedure) T-Sql(四)表关联和视图(view) T-Sql(五)xml操作 T-Sq ...

  10. svn迁移到git

    步骤命令如下: > git svn clone https://svn-url/ProjectName --no-metadata --authors-file=user.txt --trunk ...