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 ...
随机推荐
- 【LeetCode】拓扑排序
[207] Course Schedule 排课问题,n门课排课,有的课程必须在另外一些课程之前上,问能不能排出来顺序. 题解:裸的拓扑排序.参考代码见算法竞赛入门指南这本书. class Solut ...
- vue 页面回退mounted函数不执行的问题及解决方法
前言 最近做项目碰到一个很头大的问题--从a页面跳到b页面进行编辑,编辑完再返回a页面,却没走a页面的钩子函数mounted,数据没有更新 经过一番面向百度研究,终于找到了问题所在.接下来就记录一下这 ...
- Java 基础 - 基本类型 & 包装类型
基本数据类型和包装类的区别 定义不同.包装类属于对象,基本数据类型不是 声明和使用方式不同.包装类使用new初始化,有些集合类的定义不能使用基本数据类型,例如 ArrayList<Integer ...
- 分布式项目中Spring security自定义权限类
package cn.lijun.core.service; import cn.lijun.core.pojo.seller.Seller;import org.springframework.se ...
- 存储emoji表情,修改字符集为utf8mb4
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'; SET ch ...
- Luogu P1738 洛谷的文件夹
P1738 Luogu 发一个链表题解! 仅有24ms,排名第一哦~ 圆圈代表点,每个店有两个指针,一个指向自己兄弟(同级文件夹),另一个指向自己孩子(子文件夹),还有一个保存当前名字. 有点像二叉树 ...
- html 视频播放器
html 视频播放器 <html> <script> /** *视频播放 *参数说明 u - 媒体URL w - 媒体宽度width h - 媒体高度height */ // ...
- python中的缓存技术
python缓存技术 def console(a,b): print('进入函数') return (a,b) print(console(3,'a')) print(console(2,'b')) ...
- build protobuf to a static library
use ar cd src ar -cvq libprotobuf.a *.o
- 利用OpenFileDialog 获取图片存储到数据库中
private void button1_Click(object sender, EventArgs e) { string fName; ...