NPOI--操作Excel之利器(二)
回顾上一章,我们已经看到了NPOI的强大,使用NOPI我们可以生成一份完整的Excel,包含公式,包含千分位,包含单元格的合并等。在项目中第一次使用到NOPI,所以难免会遇到很多问题,我们可以在这个网站上找到相关的解决方案。
如何在项目中使用这个组件,很简单,只需要去官方网站上下载相应的版本,然后添加应用后就可以使用了。
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.Util;
using NPOI.HSSF.Util;
其中最要的一个类NPOI.HSSF.UserModel.HSSFWorkbook,通过这个类可以加载,创建sheet等。
1.初始化HSSFWorkbook,可以通过加载模版的方式创建。
/// <summary>
/// 初始化WorkBook
/// </summary>
protected void InitializeWorkbook()
{
///加载模版
string tempFilePath = HttpContext.Current.Server.MapPath("Template/配置器输出模板V1.0.XLS");
using (FileStream fs = new FileStream(tempFilePath, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new NPOI.HSSF.UserModel.HSSFWorkbook(fs);
}
DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
dsi.Company = "NPOI Team";
hssfworkbook.DocumentSummaryInformation = dsi; SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
si.Subject = "NPOI SDK Example";
hssfworkbook.SummaryInformation = si;
}
初始化WorkBook
2.创建Sheet
///加载模版中的某个sheet
NPOI.HSSF.UserModel.HSSFSheet sheet1 = hssfworkbook.GetSheet("封面"); ///创建一个新的 sheet
NPOI.HSSF.UserModel.HSSFSheet sheet1 = hssfworkbook.CreateSheet("封面");
Sheet
3.创建行、单元格
///获取某个Sheet
NPOI.HSSF.UserModel.HSSFSheet sheet1 = hssfworkbook.GetSheet("价格总表");
///创建行
HSSFRow row = sheet1.CreateRow(sheet1.LastRowNum + );
///创建单元格 下标从0开始
HSSFCell cellTitle = row.CreateCell(); ///也可以通过获取sheet的某一行
//cellTitle = sheet1.GetRow(0).GetCell(0);
创建行
4.为单元格设置样式,设置公式
/// <summary>
/// 带边框的样式居中
/// </summary>
/// <returns>NPOI样式</returns>
public HSSFCellStyle CellStyleCenter8()
{
HSSFCellStyle styleCenter = hssfworkbook.CreateCellStyle();
styleCenter.Alignment = HSSFCellStyle.ALIGN_RIGHT;
styleCenter.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.DARK_TEAL.index;
styleCenter.FillPattern = HSSFCellStyle.ALT_BARS;
styleCenter.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.DARK_TEAL.index; ///千分位
//HSSFDataFormat format = hssfworkbook.CreateDataFormat();
//styleCenter.DataFormat = format.GetFormat("¥#,##0");
styleCenter.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,##0.00"); HSSFFont font = hssfworkbook.CreateFont();
font.Boldweight = HSSFFont.BOLDWEIGHT_BOLD;
font.Color = HSSFColor.WHITE.index;
///字号
font.FontHeightInPoints = ;
///字体是否倾斜
font.IsItalic = true;
///字体
font.FontName = "微软雅黑";
styleCenter.SetFont(font);
styleCenter.WrapText = true;
styleCenter.VerticalAlignment = HSSFCellStyle.VERTICAL_CENTER;
styleCenter.BorderBottom = HSSFCellStyle.BORDER_THIN;
styleCenter.BorderLeft = HSSFCellStyle.BORDER_THIN;
styleCenter.BorderRight = HSSFCellStyle.BORDER_THIN;
styleCenter.BorderTop = HSSFCellStyle.BORDER_THIN;
return styleCenter;
} //为单元格赋值
cellTitle.SetCellValue(" 总计");
//为单元格添加样式
cellTitle.CellStyle = CellStyleCenter8();
//为单元格设置公式
cellTitle.SetCellFormula(String.Format("SUM($D{0},$D{1},$D{2},$D{3},$D{4})", , , , , ));
//公式可以跨sheet
cellTitle。SetCellFormula(string.Format("价格汇总表!D{0}", sheet1.LastRowNum + ));
单元格样式、公式
5.冻结表头
///冻结表头
///第一个参数表示要冻结的列数;
//第二个参数表示要冻结的行数,这里只冻结列所以为2;
//第三个参数表示右边区域可见的首列序号,从1开始计算;
//第四个参数表示下边区域可见的首行序号,也是从1开始计算;
sheet1.CreateFreezePane(, , , ); //强制要求Excel在打开时重新计算
sheet1.ForceFormulaRecalculation = true;
6.生成Excel
/// <summary>
///生成Excel
/// </summary>
/// <param name="strFileName">文件名</param>
/// <returns></returns>
protected string WriteToFile(string strFileName)
{
string strVirtualPath = "TempFile/" + DateTime.Now.Year.ToString() + DateTime.Now.Month + DateTime.Now.Day + "/" + strFileName + "/";
string strpath = System.Web.HttpContext.Current.Server.MapPath(strVirtualPath);
//如果没有改路径就创建一个
if (!System.IO.Directory.Exists(strpath))
{
Directory.CreateDirectory(strpath);
}
strpath = strpath + strFileName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
strVirtualPath = strVirtualPath + strFileName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
FileStream file = new FileStream(strpath, FileMode.Create); hssfworkbook.Write(file);
file.Close();
return strVirtualPath;
}
NPOI--操作Excel之利器(二)的更多相关文章
- NPOI操作Excel辅助类
/// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...
- NPOI操作excel之写入数据到excel表
在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...
- C#开发中使用Npoi操作excel实例代码
C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...
- 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数
2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数 NPOI教程:http://www.cnb ...
- C# 如何使用NPOI操作Excel以及读取合并单元格等
C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...
- 用NPOI操作EXCEL-锁定列CreateFreezePane()
public void ExportPermissionRoleData(string search, int roleStatus) { var workbook = new HSSFWorkboo ...
- .NET 通过 NPOI 操作 Excel
目录 .NET 通过 NPOI 操作 Excel 第一步:通过 NuGet 获取 NPOI 包并引入程序集 第二步:引入 NPOI 帮助类 第三步:在程序中调用相应的方法对数据进行导出导入操作 将 D ...
- 2.6.2 用NPOI操作EXCEL--设置密码才可以修改单元格内容
2.6.2 用NPOI操作EXCEL--设置密码 有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完 ...
- 使用NPOI操作Excel文件及其日期处理
工作中经常遇到需要读取或导出Excel文件的情况,而NPOI是目前最宜用.效率最高的操作的Office(不只是Excel哟)文件的组件,使用方便,不详细说明了. Excel工作表约定:整个Excel表 ...
- C#通过NPOI操作Excel
参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-post.html http://www.yuanjiaocheng.net/w ...
随机推荐
- github 多帐户使用
同一台电脑有2个github账号?咋办 比如一个公司账号一个个人账号. 私人账号如下: 邮箱example@126.com 账号:example 公司工作账号如下: work@xx.com 账号:my ...
- easy Html5 - Jquery Mobile之ToolBars(Header and Footer)
jquery 在web js框架上的风暴还在继续却也随着移动终端走向了mobile:那么jquery mobile到底包括些什么呢 简介工具栏是在移动网站和应用中的头部,尾部或者内容中的工具条:Jqu ...
- [MySQL复制异常]'Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.'
MySQL复制错误]Last_Errno: 1666 Last_Error: Error executing row event: 'Cannot execute statement: imposs ...
- Codeforces Round #340 (Div. 2) E. XOR and Favorite Number 莫队算法
E. XOR and Favorite Number 题目连接: http://www.codeforces.com/contest/617/problem/E Descriptionww.co Bo ...
- (转)用AGG实现高质量图形输出(三)
转自 :http://www.cnblogs.com/CoolJie/archive/2011/04/27/2030260.html 线段生成器(Span Generator) 我们前面举的例子使用的 ...
- Python之美[从菜鸟到高手]--深刻理解原类(metaclass)
本来想自己写这篇文章的,可当我读了这篇文章http://blog.jobbole.com/21351/,我打消了这个念头,因为肯定写的没有人家的好,说的通俗易懂,面面俱到.就厚着面皮修改下格式,测试下 ...
- iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController) 这里我们就直接上实例: 一:新建一个项目singleV ...
- KMP算法具体解释(转)
作者:July. 出处:http://blog.csdn.net/v_JULY_v/. 引记 此前一天,一位MS的朋友邀我一起去与他讨论高速排序,红黑树,字典树,B树.后缀树,包含KMP算法,只有在解 ...
- 利用js、css、html固定table的列头不动
1.CSS <style type="text/css"> #scroll_head { position: absolute; display: none; } &l ...
- B. Om Nom and Dark Park
B. Om Nom and Dark Park 在满二叉树上的某些边上添加一些值.使得根节点到叶子节点的路径上的权值和都相等.求最少需要添加多少. 我们利用性质解题. 考察兄弟节点.由于他们从跟节 ...