/// <summary>
/// 绑定数据的方法
/// </summary>
/// <param name="ssfworkbook">HSSFWorkbook</param>
/// <param name="sheet1">HSSFSheet</param>
/// <param name="cateDt">数据源</param>
/// <param name="sheetName">页名</param>
/// <param name="dispName">显示名称</param>
/// <param name="row">属于第几列</param>
/// <param name="nextCount">相隔下一列的位置(只要有一列为1,后面便都为1,以此类推)</param>
private void GetCategoryData(HSSFWorkbook ssfworkbook, HSSFSheet sheet1, DataTable cateDt, string sheetName, string dispName, int row, int nextCount)
{
try
{
HSSFSheet sheet2 = ssfworkbook.CreateSheet("Sht" + sheetName);
int indexCate = ;
ssfworkbook.SetSheetHidden(row - nextCount, true);//隐藏 foreach (DataRow cateItem in cateDt.Rows)
{
sheet2.CreateRow(indexCate).CreateCell().SetCellValue(cateItem[dispName].ToString());//列数据
indexCate++;
}
HSSFName range = ssfworkbook.CreateName();//创建名称
range.Reference = "Sht" + sheetName + "!$A$1:$A$" + indexCate;//格式
range.NameName = sheetName; //将下拉列表添加
CellRangeAddressList regions = null;
regions = new CellRangeAddressList(, , row - , row - );
DVConstraint constraint = DVConstraint.CreateFormulaListConstraint(sheetName);
HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
sheet1.AddValidationData(dataValidate);
}
catch { }
}
    /// <summary>
/// 设置Excel表头(数组Length必须相同)
/// </summary>
/// <param name="strName">Excel中的名称</param>
/// <param name="width">宽</param>
/// <param name="headerRow">HSSFRow</param>
/// <param name="sheet1">HSSFSheet</param>
/// <param name="HSSFWorkbook">ssfworkbook</param>
private string SetUpExcelTitle(HSSFWorkbook ssfworkbook, string[] strName, int[] width, HSSFRow headerRow, HSSFSheet sheet1)
{
try
{
if (strName.Length != width.Length)
{
return "数组长度不同!";
}
HSSFFont fontTitle = ssfworkbook.CreateFont();
fontTitle.FontHeightInPoints = ;
fontTitle.Boldweight = HSSFFont.BOLDWEIGHT_NORMAL;
HSSFCellStyle hssfCellTitle = ssfworkbook.CreateCellStyle();
hssfCellTitle.SetFont(fontTitle); for (int i = ; i < strName.Length; i++)
{
//设置表头
headerRow.CreateCell(i).SetCellValue(strName[i]);
//设置表头的宽度
sheet1.SetColumnWidth(i, width[i]);
headerRow.GetCell(i).CellStyle = hssfCellTitle;
}
return "ok";
}
catch (Exception ex)
{
return ex.Message;
}
}
  /// <summary>
/// 设置Excel内容
/// </summary>
/// <param name="values">内容</param>
/// <param name="dataRow">HSSFRow</param>
private void SetUpExcelContent(string[] values, HSSFRow dataRow)
{
for (int i = ; i < values.Length; i++)
{
//填充数据
dataRow.CreateCell(i).SetCellValue(values[i]);
}
}

封装NPOI导出含下拉列表的Excel的更多相关文章

  1. NPOI导出多张图片到Excel

    常用NPOI导出数据到excel,但没有试过如何导出图片.NPOI最大的特点就是不依赖于Excel组件,服务端不需要安装Excel.在单元格中插入图片主要是用HSSFClientAnchor对象.他有 ...

  2. C# NPOI导出Excel和EPPlus导出Excel比较

    系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...

  3. C# NPOI导出Excel和EPPlus导出Excel

    转自:http://www.cnblogs.com/tanpeng/p/6155749.html 系统中经常会使用导出Excel的功能.之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到 ...

  4. .NET Core使用NPOI导出复杂,美观的Excel详解

    前言: 这段时间一直专注于数据报表的开发,当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦.客户要求要导出优雅,美观的Excel文档格式的来展示数据,当时的第一想法就是使用NPOI开源库来做 ...

  5. NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters

    /******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...

  6. 基于NPOI导出和导入Excel

    概述 NPOI,顾名思义,就是POI的.NET版本.NPOI就是用.NET语言编写的一套数据导出Excel的开源项目,支持XML.xls.xlsx.ppt等格式..NET不仅实现Excel导出还可以实 ...

  7. (C#)使用NPOI导出Excel

    在做业务型的软件时,经常需要将某些数据导出,本文介绍了在Winform或Asp.net中使用NPOI(POI 项目的 .NET 版本)来操作Excel文件,而无需安装Office. 首先,需要获取NP ...

  8. Asp.Net 使用Npoi导出Excel

    引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...

  9. NPOI导出EXCEL 打印设置分页及打印标题

    在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而 ...

随机推荐

  1. mysql 执行状态分析 show processlist

    SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此信息.如果您有SUPER权限,您可以看到所有线程.否则,您只能看到您自己的线程( ...

  2. JS 实现中英文翻译

    缺点就是还是会闪出中文,但是效果还行. var langPackage = { "主题":"Title", "下一页":"Next ...

  3. cmd进入某个目录

    love you my pig java枚举类 cmd进入某个目录 2011-04-06 15:49:38| 分类: 小知识 | 标签: |字号大中小 订阅     1.开始->运行->C ...

  4. PAT乙级 1003. 我要通过!(20)

    答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1. ...

  5. SQL优化SQL tuning

    1. 索引不合适,走主键进行了key lookup查找   说明索引没有覆盖到where条件 或者  orderby 或者 group by的列

  6. java web sql注入测试(3)---现象分析

    那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用 ...

  7. dbo与db_owner区别

    dbo 是具有在数据库中执行所有活动的暗示性权限的用户.将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上.另外,由固定服务器角色 sysadmin 的任 ...

  8. Robotium Recorder的初试

    一.安装 资料来自官方 Prerequisites: Install the Java JDK. Install the Android SDK. The ADT bundle with Eclips ...

  9. scala的apply方法

    package com.test.scala.test /** * apply 方法 */ object ApplyTest { def main(args: Array[String]): Unit ...

  10. 内存映射MMAP和DMA【转】

    转自:http://blog.csdn.net/zhoudengqing/article/details/41654293 版权声明:本文为博主原创文章,未经博主允许不得转载. 这一章介绍Linux内 ...