poi之Excel下载之详细设置
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下载之详细设置的更多相关文章
- poi之Excel(在线生成)下载
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. poi之Excel下载 @RequestMappi ...
- Flex Excel下载
最近做Flex里的Excel下载,用as3xls进行Excel导出后,Excel修改编辑后老出现:不能以当前格式保存...若要保存所做的更改,请单击“确定”,然后将其另存为最新的格式. 最后通过JAV ...
- Java使用POI为Excel打水印,调整列宽并设置Excel只读(用户不可编辑)
本文介绍在Java语言环境下,使用POI为Excel打水印的解决方案,具体的代码编写以及相关的注意事项. 需求描述: 要求通过系统下载的Excel都带上公司的水印,列宽调整为合适的宽度,并且设置为不可 ...
- Struts2使用POI创建Excel并下载
本文将讲解在Struts2框架下如何使用POI创建Office Excel文档并实现下载功能. Apache POI ,操作微软文档的Java API,简单来说就是可以用来操作Office文档的API ...
- POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
实际开发过程中通常用到的就是从数据库导出EXCEL表格了,JXL可以这样做,其实POI也可以(关于JXL与POI的异同可访问我之前总结的文章),之前写过POI对七种文档(当然也包括EXCEL)的内容读 ...
- java springmvc poi 导出Excel,先简单记录,后期会详细描写
POI jar包下载 : http://poi.apache.org/download.html jsp代码 <%@ page language="java" content ...
- POI操作Excel详细解释,HSSF和XSSF两种方式
HSSF道路: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundEx ...
- POI导出excel并下载(以流的形式在客户端下载,不保存文件在服务器上)
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; i ...
- POI对Excel单元格进行颜色设置
POI对Excel单元格进行颜色设置 学习了:http://www.myexception.cn/program/1932587.html HSSFWorkbook workbook = new HS ...
随机推荐
- Android中App可分配内存的大小(转)
转自:http://blog.csdn.net/u011506413/article/details/50965435 现在真实测试结果: 1,为了搞清楚每个应用程序在Android系统中最多可分配多 ...
- rest framework的框架实现之 (版本,解析器,序列化,分页)
一版本 版本实现根据访问的的方式有以下几种 a : https://127.0.0.1:8000/users?version=v1 ---->基于url的get方式 #settings.pyR ...
- 配置 Linux 静态网卡 & 远程连接 MySQL 问题
1.设置 Linux 为静态网络配置 使用 VMWare 安装好 CentOS 后,将网络适配器设置为 NAT 模式.为了防止 IP 关机重启时候经常变动,需要将网卡信息设置为静态. 修改 /etc/ ...
- SQL中忘记用户登陆密码该如何修改
1.每个数据库登陆之前都必须先启动它本身的数据服务,SQL数据库也不例外,首先我们要做的是先打开我们的SQL数据服务! 2.随后在我们的开始菜单中找到我们的SQL启动图标,打开即可 3.弹出登录窗体( ...
- php编译安装增加pdo扩展
首先查看mysql版本和位置 mysql --version whereis mysql 去php安装目录安装扩展 cd /usr/local/src/php-5.4.25/ext/pdo_mysql ...
- 学 Win32 汇编[22] - 逻辑运算指令: AND、OR、XOR、NOT、TEST
AND: 逻辑与 ;该指令会置 CF=OF=; 其结果影响 SF.ZF.PF ;指令格式: AND r/m, r/m/i ; Test22_1.asm - 使用 AND 运算将一个数的第二.四位清零 ...
- CF C. Fly
题目 题目大意:第一行给出一个数n,代表有n个点,第二行给出火箭的自重,第三行给出每个点去时每吨需要的燃料,第四行给出每个点返程时每吨需要的燃料.求出发时携带的最小燃料数 分析:这题我们只要逆向思维就 ...
- 关于RF中元素定位问题
今天碰到一个定位元素的问题,用CLASS定位. 调试后是这样的情况: 显示定位正确,字体被覆盖了.完了,在RF中跑脚本的时候,报错,说没有找到元素 . 郁闷,各种试,还是没有定位到. 最好问前端,教我 ...
- 关于python语言学习心得
最近又开始学习代码了,中途停顿了2个月左右,学习贵在坚持. 内心非常渴望学会一门编程语言,对代码目前来说还不是排斥. 也没有什么好的学习方法,只是按照同事说的,买了一本书籍来,边看边练习,先熟悉它的语 ...
- java 轻量级 RestClient
package org.rx.socks.http; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; ...