//使用NPOI操作Excel
private void ExcelNPOI(System.Data.DataTable dt, HttpContext context)
{
IWorkbook workbook = null;//工作薄
IRow row = null;//行
ICell cell = null;//单元格
ISheet sheet = null;//工作表
try
{
//如果表中查询的有数据
if (dt != null && dt.Rows.Count > )
{
//创建工作薄
//workbook = new HSSFWorkbook(); //导出后缀为xls
workbook = new XSSFWorkbook();//导出后缀为xlsx
sheet = workbook.CreateSheet("Sheet1");//创建一个名称为Sheet1的表
int rowCount = dt.Rows.Count;//行数
int columnCount = dt.Columns.Count;//列数 //npoi设置Excel样式
ICellStyle cellStyle = workbook.CreateCellStyle();
//设置单元格为数字格式
cellStyle.DataFormat = workbook.CreateDataFormat().GetFormat("0.00");
//居中对齐
cellStyle.Alignment = HorizontalAlignment.Center;
cellStyle.VerticalAlignment = VerticalAlignment.Center;
//边框
cellStyle.BorderTop = BorderStyle.Thin;
cellStyle.BorderBottom = BorderStyle.Thin;
cellStyle.BorderLeft = BorderStyle.Thin;
cellStyle.BorderRight = BorderStyle.Thin;
//创建一个字体样式对象
NPOI.SS.UserModel.IFont FontRow = workbook.CreateFont();
//设置字体样式
FontRow.FontName = "宋体";
//设置字体加粗样式
FontRow.Boldweight = (short)FontBoldWeight.Bold;
//设置字体大小
FontRow.FontHeightInPoints = ;
//是否加粗
//FontRow.IsBold = false;
//字体样式添加进去
cellStyle.SetFont(FontRow); //合并单元格 起始行号,终止行号, 起始列号,终止列号 execl的行列都是从0开始,而不是从1开始
sheet.AddMergedRegion(new CellRangeAddress(, , , )); //添加第一行 并赋值
row = sheet.CreateRow();
row.CreateCell().SetCellValue("值");
cell = row.GetCell();
cell.CellStyle = cellStyle;
//添加第二行 定义表头
row = sheet.CreateRow();
//单元格赋值
row.CreateCell().SetCellValue("值");
row.CreateCell().SetCellValue("值");
row.CreateCell().SetCellValue("值");
row.CreateCell().SetCellValue("值");
row.CreateCell().SetCellValue("值");
row.CreateCell().SetCellValue("值"); //设置列宽
sheet.SetColumnWidth(, * );
sheet.SetColumnWidth(, * );
sheet.SetColumnWidth(, * );
sheet.SetColumnWidth(, * );
sheet.SetColumnWidth(, * );
sheet.SetColumnWidth(, * ); //设置行高 第一行
row = sheet.GetRow();
row.Height = short.Parse((22.5 * ).ToString());
//使用SetFont方法将字体样式添加到单元格样式中
cellStyle.SetFont(FontRow); //设置行高 第二行
row = sheet.GetRow();
row.Height = short.Parse((18.5 * ).ToString());
//获得第二行的单元格
List<ICell> cells = row.Cells;
for (int i = ; i < cells.Count; i++)
{
//获得当前行
cell = row.GetCell(i);
//设置样式
cell.CellStyle = cellStyle;
} //写入数据
for (int i = ; i < rowCount; i++)
{
//创建新行
row = sheet.CreateRow(i + );
//定义新行行高
row.Height = short.Parse((13.5 * ).ToString());
for (int j = ; j < columnCount; j++)
{
if (j - >= )
{
//创建新的单元格
cell = row.CreateCell(j - );
//赋值
cell.SetCellValue(dt.Rows[i][j].ToString());
cell.CellStyle = cellStyle;
}
}
}
string Excelfile = context.Server.MapPath("路径");
string path = context.Server.MapPath("excel再上一级的路径");
DirectoryInfo folder = new DirectoryInfo(path);
//文件夹是否存在当前Excel
foreach (FileInfo file in folder.GetFiles("*.xlsx"))
{
if (file.FullName == Excelfile)
{
try
{
File.Delete(Excelfile);
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
}
}
using (FileStream file = new FileStream(Excelfile, FileMode.Create))
{
workbook.Write(file);  //写入数据 创建文件。
file.Close();
}
}
}
catch (Exception ex)
{
}
}

NPOI操作、导出Excel的更多相关文章

  1. NPOI导入导出Excel

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

  2. .Net core NPOI导入导出Excel

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

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

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

  4. Npoi导入导出Excel操作

    之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...

  5. Excel操作--使用NPOI导入导出Excel为DataTable

    1.ExcelHelper封装 namespace NPOI操作Excel { public class ExcelHelper { /// <summary> /// DataTable ...

  6. <转>Npoi导入导出Excel操作<载>

    //Datatable导出Excel private static void GridToExcelByNPOI(DataTable dt, string strExcelFileName) { tr ...

  7. .net mvc利用NPOI导入导出excel

    1.导出Excel :首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...

  8. ASP.Net MVC利用NPOI导入导出Excel

    因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <s ...

  9. net mvc 利用NPOI导入导出excel

    1.导出Excel : 首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...

  10. NPOI操作之一EXCEL数据导入数据库

    一.概要 前面讲到NPOI操作EXCEL导出功能,下面讲下从EXCEL里获取数据添加进数据库. 二.代码 HSSFWorkbook hssfworkbook; public void ExcelDat ...

随机推荐

  1. 垂直对齐:vertical-align属性——使用中注意事项

    1.vertical-align(垂直对齐),只对行内元素和单元格元素有效,例如属性为inline和inline-block的元素以及图片.输入表单等都是行内元素; 2.元素默认的垂直对齐方式为基线对 ...

  2. HDFS的Web界面

  3. Vuejs实战项目四:权限校验

    路由跳转参考文档:https://router.vuejs.org/zh/guide/advanced/navigation-guards.html 在/src下创建permission.js进行权限 ...

  4. LOJ 6042 跳蚤王国的宰相

    LOJ 6042 跳蚤王国的宰相 题意 跳蚤王国爆发了一场动乱,国王在镇压动乱的同时,需要在跳蚤国地方钦定一个人来做宰相. 由于当时形势的复杂性,很多跳蚤都并不想去做一个傀儡宰相,带着宰相的帽子,最后 ...

  5. MySQL系列(七)--SQL优化的步骤

    前面讲了如何设计数据库表结构.存储引擎.索引优化等内存,这篇文章会讲述如何进行SQL优化,也是面试中关于数据库肯定会被问到的, 这些内容不仅仅是为了面试,更重要的是付诸实践,最终用到工作当中 之前的M ...

  6. 【html、CSS、javascript-1】html基础

    HTML   翻译成代码如下: web: import socket def handle_request(client): buf = client.recv(1024) client.sendal ...

  7. 一句话介绍python线程、进程和协程

    一.进程: Python的os模块封装了常见的系统调用,其中就包括fork.而fork是linux常用的产生子进程的方法,简言之是一个调用,两个返回. 在python中,以下的两个模块用于进程的使用. ...

  8. H5C3--仿京东首页(包含轮播图,倒计时)

    !!!很抱歉,之前的域名已经过期了,已经被别人购买了拿去做菠菜了,现在的话,京东页面我重新发布一下代码 #请看注意事项,因为有模拟请求,请在本地服务器或者IDEA类编译器打开(2019年10月10日0 ...

  9. 前端(jQuery)(1)-- JQuery简介及语法

    1.jQuery库简介 1.1.jQuery: jQuery库可以通过一行简单的标记被添加到网页中 1.2.什么是jQuery: jQuery是一个JavaScript函数库(由于底层封装的问题,不需 ...

  10. HDU1950

    //虽然是一道LIS问题,但是还是第一次用O(n*lgn)这种算法,赶角波错哈哈哈哈....至少今天有所收获 #include<cstdio> #include<cstring> ...