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 ...
随机推荐
- 【JS学习】慕课网8-17编程练习 网页的返回与跳转
编程练习 制作一个跳转提示页面: 要求: 1. 如果打开该页面后,如果不做任何操作则5秒后自动跳转到一个新的地址,如慕课网主页. 2. 如果点击“返回”按钮则返回前一个页面. 代码如下: 需要注意的是 ...
- .babelrc配置例子
{ "presets":[ ["es2015",{"modlues":false}], "react", ], &quo ...
- Office VBA 参考
Office VBA 参考:https://docs.microsoft.com/zh-CN/office/vba/api/overview/
- bootstrapTable 分页插件
前端: @{ ViewBag.Title = "BootstrapTable 入门"; Layout = null; } <!-- 引入bootstrap样式 --> ...
- linux文件目录颜色及特殊权限对应的颜色
白色:表示普通文件蓝色:表示目录绿色:表示可执行文件红色:表示压缩文件浅蓝色:链接文件红色闪烁:表示链接的文件有问题黄色:表示设备文件灰色:表示其它文件 各种背景颜色的显示和文件的权限有关红色背景:特 ...
- jmeter测试之-脚本制作
一.脚本录制 1.遇见的问题,回放的时候总是登录失败 解决方式:设置HTTP请求为—跟随重定向 2.新增一个用户的时候,脚本参数里面输入汉字,在浏览器查看的时候显示问号 解决方式:脚本编码方式增加u ...
- tp5.1 模型 where多条件查询 like 查询 --多条件查询坑啊!!(tp5.1与tp5.0初始化控制器不一样)
tp5.1与tp5.0初始化控制器不一样!!!!!!!!!! 多条件 where必须 new where() ---------------------------------------tp5.1 ...
- Java 中 Properties 类的操作
一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...
- USACO2012 Moo /// 模拟 oj21548
大致题意: 递归地描述序列:设S(0)为3个字符的序列“mo o”.然后在较长的序列小号(ķ)通过取序列的拷贝获得小号(ķ -1),则“摩... O”与ķ 2 O公司,然后该序列的另一个拷贝小号(ķ ...
- Vue番外篇-路由进阶(一)
Vue的router默认是 export default new Router({ mode: 'history', routes: [ { path: '/', name: 'HelloWorld' ...