//使用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. [转] 允许远程用户登录访问mysql的方法

    需要手动增加可以远程访问数据库的用户. 方法一.本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项 ...

  2. IO流18 --- RandomAccessFile实现数据的读写操作 --- 技术搬运工(尚硅谷)

    RandomAccessFile实例化时,需要设置读写模式 示例:复制文件 @Test public void test16() throws IOException { RandomAccessFi ...

  3. pycharm新手入门

    1.新建项目 2.配置 3.create 4.新建.py文件 5.可以愉快的敲代码啦

  4. struts2-自定义拦截器-struts2标签

    1 自定义拦截器 1.1 架构 1.2 拦截器创建 创建方式1 创建方式2 创建方式3 ★★★★ 1.3 拦截器api 放行 前后处理 不放行,直接跳转到一个结果页面 不执行后续的拦截器以及Actio ...

  5. HTML入门:Tag学习

    即使 <br> 在所有浏览器中的显示都没有问题,使用 <br /> 也是更长远的保障. 标签 描述 <html> 定义 HTML 文档. <body> ...

  6. Ubuntu 链接ln的使用:创建和删除符号链接

    一 . 使用方式 ln [option] source_file dist_file (source_file是待建立链接文件的文件,dist_file是新创建的链接文件) -f 建立时,将同档案名删 ...

  7. 浅谈java.util.ConcurrentModificationException(并发修改异常)

    java中的list集合是我们经常使用的集合,而对集合进行增加和删除元素是我们最常用的操作.那么在什么时候对list集合什么样的操作,就会发生java.util.ConcurrentModificat ...

  8. php时间戳转换方式

    {echo date("Y-m-d",$v.created)} 年-月-日 {echo date("Y-m-d H:i:s",$new.created)} 年- ...

  9. 关闭浏览器或者关闭使用window.open打开的页面时添加监听事件

    最近工作中有个需求:点击按钮时打开一个页面,此处取名为page1,打开页面的前提条件是如果有人已经打开过page1页面并且没有关闭时请求ajax判断session是否为空,如果为空则将用户名和文档id ...

  10. 20190927 - 28 后觉 「雅礼Day3 - 4」

    我再不开$C++11$编译我就从三楼跳下去$$\text{%%%lsc}$$ Day3 -lm -O2 -std=c++ Before $Day3$? 全是$Subtask$? $\frac{1}{4 ...