1、设置标题格式

       /**
* HEAD样式
*
* @param workbook
* @param sheet
*/
public void setHeadCellStyles(HSSFWorkbook workbook, HSSFSheet sheet) {
headStyle = workbook.createCellStyle();
headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont font = workbook.createFont();
headStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
font.setFontName("宋体");
font.setFontHeightInPoints((short) 16);// 设置字体大小
headStyle.setFont(font);
}

  

2、设置列头样式

     /**
* 列头样式
* @param workbook
* @param sheet
*/
public void setTitleCellStyles(HSSFWorkbook workbook, HSSFSheet sheet)
{
titleStyle = workbook.createCellStyle(); // 设置边框
titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
// 设置背景色
titleStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);
titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
// 设置居中
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置字体
HSSFFont font = workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 11); // 设置字体大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 粗体显示
titleStyle.setFont(font);// 选择需要用到的字体格式
// 设置自动换行
titleStyle.setWrapText(true);
// 设置列宽 ,第一个参数代表列id(从0开始),第2个参数代表宽度值
sheet.setColumnWidth(0, 7000);//
// sheet.setColumnWidth(1, 7000);//
sheet.setColumnWidth(1, 4000);//
sheet.setColumnWidth(2, 4000);//
sheet.setColumnWidth(3, 4000);//
sheet.setColumnWidth(4, 7000);//
sheet.setColumnWidth(5, 7000);//
sheet.setColumnWidth(6, 4000);//
sheet.setColumnWidth(7, 4000);//
sheet.setColumnWidth(8, 4000);//
sheet.setColumnWidth(9, 4000);//
sheet.setColumnWidth(10, 4000);//
}

  

3、设置数据样式

       /**
* 数据样式
*
* @param workbook
* @param sheet
*/
public void setDataCellStyles(HSSFWorkbook workbook, HSSFSheet sheet) {
dataStyle = workbook.createCellStyle(); // 设置边框
dataStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
dataStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
dataStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
dataStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
// 设置背景色
dataStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);
dataStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
// 设置居中
dataStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
// 设置字体
HSSFFont font = workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 11); // 设置字体大小
dataStyle.setFont(font);// 选择需要用到的字体格式
// 设置自动换行
dataStyle.setWrapText(true);
}

  

4、创建隐藏页和数据域(省市区三级联动下拉框数据隐藏域设置)

        /**
* 创建隐藏页和数据域(省市区三级联动下拉框数据隐藏域设置)
* @param workbook
* @param hideSheetName
*/
public void creatHideSheet(HSSFWorkbook workbook) {
/****************************************************** 创建省市区 ***************************************************/
HSSFSheet factoryAndModelSheet = workbook.createSheet("factoryAndModelSheet");// 隐藏一些信息
/*************************************************** 省-市 start ***************************************************/
//省份
List<Area> proviceList = 获得省份列表;
List<String> rowList = null;
String provinceid = "";
String provinceCity = "";
Name name;
for(int i=0;i<proviceList.size();i++){
HSSFRow pfModelRow = factoryAndModelSheet.createRow(i);
rowList = new ArrayList<String>();
provinceid = proviceList.get(i).getId().toString();
provinceCity = proviceList.get(i).getProvinceCity();
rowList.add(provinceCity + "_" + provinceid);
List<Area> cityList = 根据省份获得城市列表;
// 添加“省--->市” 名称
name = workbook.createName();
name.setNameName( provinceCity+ "_" + provinceid);
for(int j=0; j<cityList.size(); j++){
Area area = cityList.get(j);
rowList.add(area.getProvinceCity()+"_"+area.getId().toString());
}
this.creatRow(pfModelRow, rowList);
name.setRefersToFormula("factoryAndModelSheet!$B$" + (i + 1) + ":$"
+ this.getcellColumnFlag(cityList.size() + 1) + "$"
+ (i + 1));
}
name = workbook.createName();
name.setNameName("provice");
name.setRefersToFormula("factoryAndModelSheet!$A$1:$A$"+ proviceList.size());
/*************************************************** 省-市 end ***************************************************/
/*************************************************** 市-区 start ***************************************************/
//市
int sm = proviceList.size()+1;
List<String> cityNList = null;
List<Area> cityareaList = new LinkedList<Area>();
String cityid = "";
String cityCity = "";
//将所有的市加之cityareaList
for(int i=0;i<proviceList.size();i++){
provinceid = proviceList.get(i).getId().toString();
List<Area> cityList = 获得城市列表;
cityareaList.addAll(cityList);//加至List
}
for(int i=0;i<cityareaList.size();i++){
HSSFRow pfModelRow = factoryAndModelSheet.createRow(sm+i);
cityNList = new ArrayList<String>();
cityid = cityareaList.get(i).getId().toString();
cityCity = cityareaList.get(i).getProvinceCity();
cityNList.add(cityCity + "_" + cityid);
List<Area> cityList = 根据城市查询区域列表;
// 添加“市--->区” 名称
name = workbook.createName();
name.setNameName( cityCity+ "_" + cityid);
for(int j=0; j<cityList.size(); j++){
Area area = cityList.get(j);
cityNList.add(area.getProvinceCity()+"_"+area.getId().toString());
}
this.creatRow(pfModelRow, cityNList);
name.setRefersToFormula("factoryAndModelSheet!$B$" + (sm+i + 1) + ":$"
+ this.getcellColumnFlag(cityList.size() + 1) + "$"
+ (sm+i + 1));
}
name = workbook.createName();
name.setNameName("citycityname");
name.setRefersToFormula("factoryAndModelSheet!$A$"+sm+":$A$"+ cityareaList.size());
/*************************************************** 市-区 end ***************************************************/
// 设置隐藏页标志
workbook.setSheetHidden(workbook.getSheetIndex("factoryAndModelSheet"),true);
}

  

5、创建标题和列头数据

/**
* 创建标题应用列头
* @param userinfosheet1
* @param userName
*/
public void creatAppRowHead(HSSFSheet userinfosheet1, String headName) {
// 设置标题
HSSFRow rowHead = userinfosheet1.createRow(0);
userinfosheet1.addMergedRegion(new Region(0, (short) 0, 0, (short) 21));
POIUtils.createCell(rowHead, (short) 0, headName, headStyle);
rowHead.setHeight((short) (27 * 20)); // 设置表头
HSSFRow row = userinfosheet1.createRow(1); HSSFCell merchantIdCell = row.createCell(0);
merchantIdCell.setCellValue("一");
merchantIdCell.setCellStyle(titleStyle); // HSSFCell mrchtNameCell = row.createCell(1);
// mrchtNameCell.setCellValue("二");
// mrchtNameCell.setCellStyle(titleStyle); HSSFCell merchantEnameCell = row.createCell(1);
merchantEnameCell.setCellValue("二");
merchantEnameCell.setCellStyle(titleStyle); HSSFCell abbrCnameCell = row.createCell(2);
abbrCnameCell.setCellValue("三");
abbrCnameCell.setCellStyle(titleStyle); HSSFCell abbrEnameCell = row.createCell(3);
abbrEnameCell.setCellValue("四");
abbrEnameCell.setCellStyle(titleStyle); HSSFCell mccIdCell = row.createCell(4);
mccIdCell.setCellValue("五");
mccIdCell.setCellStyle(titleStyle); HSSFCell addressCell = row.createCell(5);
addressCell.setCellValue("六");
addressCell.setCellStyle(titleStyle); HSSFCell provinceCell = row.createCell(6);
provinceCell.setCellValue("七");
provinceCell.setCellStyle(titleStyle); HSSFCell cityNoCell = row.createCell(7);
cityNoCell.setCellValue("八");
cityNoCell.setCellStyle(titleStyle); HSSFCell zoneCell = row.createCell(8);
zoneCell.setCellValue("九");
zoneCell.setCellStyle(titleStyle); HSSFCell telephoneCell = row.createCell(9);
telephoneCell.setCellValue("十");
telephoneCell.setCellStyle(titleStyle); HSSFCell managerCell = row.createCell(10);
managerCell.setCellValue("十一");
managerCell.setCellStyle(titleStyle);
}

  

6、设置下拉框

/**
* 添加下拉框限制
* @param sheet1
*/
public void createSelectValidate(HSSFSheet sheet1) { //省,第7列
DVConstraint constraintPosType = DVConstraint.createFormulaListConstraint("provice");
// 作用域:起始行、终止行、起始列、终止列
CellRangeAddressList regionsPosType = new CellRangeAddressList(2, 499,6, 6);
DataValidation data_validation_PosType = new HSSFDataValidation(regionsPosType, constraintPosType);
sheet1.addValidationData(data_validation_PosType); //市,第8列
DVConstraint constraintcityNo = DVConstraint.createFormulaListConstraint("INDIRECT($G$3:$G$500)");
// 作用域:起始行、终止行、起始列、终止列
CellRangeAddressList regionscityNo = new CellRangeAddressList(2, 499,7, 7);
DataValidation data_validation_cityNo = new HSSFDataValidation(regionscityNo, constraintcityNo);
sheet1.addValidationData(data_validation_cityNo); //区,第9列
DVConstraint constraintmanager = DVConstraint.createFormulaListConstraint("INDIRECT($H$3:$H$500)");
// 作用域:起始行、终止行、起始列、终止列
CellRangeAddressList regionsmanager = new CellRangeAddressList(2, 499,8, 8);
DataValidation data_validation_manager = new HSSFDataValidation(regionsmanager, constraintmanager);
sheet1.addValidationData(data_validation_manager); }

  

7、工具方法-创建一列数据

        /**
* 创建一列数据
*
* @param currentRow
* @param textList
*/
public void creatRow(HSSFRow currentRow, List<String> textList) {
if (textList != null && textList.size() > 0) {
int i = 0;
for (String cellValue : textList) {
HSSFCell userNameLableCell = currentRow.createCell(i++);
userNameLableCell.setCellValue(cellValue);
}
}
} // 根据数据值确定单元格位置(比如:28-AB)
private String getcellColumnFlag(int num) {
String columFiled = "";
int chuNum = 0;
int yuNum = 0;
if (num >= 1 && num <= 26) {
columFiled = this.doHandle(num);
} else {
chuNum = num / 26;
yuNum = num % 26; columFiled += this.doHandle(chuNum);
columFiled += this.doHandle(yuNum);
}
return columFiled;
} private String doHandle(final int num) {
String[] charArr = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
"W", "X", "Y", "Z" };
return charArr[num - 1].toString();
}

  

poi之Excel下载之详细设置的更多相关文章

  1. poi之Excel(在线生成)下载

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. poi之Excel下载 @RequestMappi ...

  2. Flex Excel下载

    最近做Flex里的Excel下载,用as3xls进行Excel导出后,Excel修改编辑后老出现:不能以当前格式保存...若要保存所做的更改,请单击“确定”,然后将其另存为最新的格式. 最后通过JAV ...

  3. Java使用POI为Excel打水印,调整列宽并设置Excel只读(用户不可编辑)

    本文介绍在Java语言环境下,使用POI为Excel打水印的解决方案,具体的代码编写以及相关的注意事项. 需求描述: 要求通过系统下载的Excel都带上公司的水印,列宽调整为合适的宽度,并且设置为不可 ...

  4. Struts2使用POI创建Excel并下载

    本文将讲解在Struts2框架下如何使用POI创建Office Excel文档并实现下载功能. Apache POI ,操作微软文档的Java API,简单来说就是可以用来操作Office文档的API ...

  5. POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】

    实际开发过程中通常用到的就是从数据库导出EXCEL表格了,JXL可以这样做,其实POI也可以(关于JXL与POI的异同可访问我之前总结的文章),之前写过POI对七种文档(当然也包括EXCEL)的内容读 ...

  6. java springmvc poi 导出Excel,先简单记录,后期会详细描写

    POI jar包下载 : http://poi.apache.org/download.html jsp代码 <%@ page language="java" content ...

  7. POI操作Excel详细解释,HSSF和XSSF两种方式

    HSSF道路: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  8. POI导出excel并下载(以流的形式在客户端下载,不保存文件在服务器上)

    import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; i ...

  9. POI对Excel单元格进行颜色设置

    POI对Excel单元格进行颜色设置 学习了:http://www.myexception.cn/program/1932587.html HSSFWorkbook workbook = new HS ...

随机推荐

  1. 神奇的Android Studio Template(转)

    转自:http://blog.csdn.net/lmj623565791/article/details/51592043 本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台 ...

  2. Java——异常的基本概念

    1.异常的基本概念 1.1什么是异常 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格 ...

  3. java相差小时数

    public static String getTime(Date date){ StringBuffer time = new StringBuffer(); Date date2 = new Da ...

  4. JAVA并发工具类---------------(CountDownLatch和CyclicBarrier)

    CountDownLatch是什么 CountDownLatch,英文翻译为倒计时锁存器,是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 闭锁可以延迟线程的进 ...

  5. NAT和路由器 基本概念

    NAT(Network Address Translation, 网络地址转换)是1994年提出的.当在专用网内部的一些主机本来已经分配到了本地IP地址(即 仅在本专用网内使用的专用地址),但现在又想 ...

  6. (转)Linux下使用system()函数一定要谨慎

    转:http://my.oschina.net/renhc/blog/53580 曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入.只是简单的知道用这个函 ...

  7. 戏说 .NET GDI+系列学习教程(二、Graphics类的方法)

    一.DrawBezier 画立体的贝尔塞曲线 private void frmGraphics_Paint(object sender, PaintEventArgs e) { Graphics g ...

  8. 如何解决Unsupported major.minor version 52.0问题?

    为什么出现Unsupported major.minor version 52.0? You get this error because a Java 7 VM tries to load a cl ...

  9. XML 扩展部分

    引入命名空间 xmlns DTD缺点 1.不支持命名空间 2.支持的数据类型很少 3.DTD不可扩展 4.DTD不遵循XML规范 DTD的优点 简洁 schema 通过schema来解决DTD的不足 ...

  10. 分析由Python编写的大型项目(Volatility和Cuckoo)

    之前使用python都是用来做一些简单的脚本,本质上和bat批处理文件没有区别. 但是Python是可以用来编写大型的项目的,比如: Volatility:https://code.google.co ...