//使用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. SDI在自定义的工具栏上添加下拉控件

    0.首先到自己的工具条上新建一个控件,并命名新ID 1.拷贝FlatComboBox.h和FlatComboBox.cpp到工程目录下 2.建立新类 class CTrackerToolBar : p ...

  2. python 当文件目录不存在时,如何自动创建

    import os if not os.path.exists('foldername'): os.mkdir('foldername')

  3. YUM配置文件

    创建容器,位置在/etc/yum.repos.d,扩展名必须是.repo #cd  /etc/yum.repos.d #vim yum.repo         新建一个仓库文件,名字可以随便定义,在 ...

  4. Python numpy.transpose 详解

    前言 看Python代码时,碰见 numpy.transpose 用于高维数组时挺让人费解,通过一番画图分析和代码验证,发现 transpose 用法还是很简单的. 正文 Numpy 文档 numpy ...

  5. JAVA面试常见问题之设计模式篇

    1.常见的设计模式 单例模式.工厂模式.建造模式.观察者模式.适配器模式.代理模式.装饰模式. 参考:https://www.cnblogs.com/cr330326/p/5627658.html 2 ...

  6. xampp中tomcat服务器无法启动

    xampp中的Tomcat服务器无法启动的问题... 我的Java中自己安装了Tomcat服务器,webstorm中还有一个php服务器,,,xampp中的能不能用我就不需要去理会了...反正tomc ...

  7. 51nod1947 栈的代价和

    1947 栈的代价和 n是5e7 只能O(n)做 大力生成函数转形式幂级数再解方程 这个是广义二项式定理: https://baike.baidu.com/item/%E4%BA%8C%E9%A1%B ...

  8. Java的split()方法

    在java中,split方法很常用,但是有些时候我们发现并不管用,不管用的情况:split("."),split("^"), 管用的情况:split(" ...

  9. 工作记录--使用FFmpeg将一个视频文件中音频合成到另一个视频中

    由于工作需要,临时被老大吩咐去研究一个FFmpeg工具,通过linux命令行去将一个视频中的音频提取出来并合成到另一个视频中,最终的效果是要保证2个视频中的音频都在一个视频中播放. 但是本人对FFmp ...

  10. 洛谷P1082 同余方程 [2012NOIP提高组D2T1] [2017年6月计划 数论06]

    P1082 同余方程 题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输 ...