用POI生成EXCEL文件的技巧与心得
来源:互联网 发布:2017 淘宝 大麻 编辑:程序博客网 时间:2024/05/17 09:20
用POI创建EXCEL文件:
第一步:创建一个HSSFWorkbook: HSSFWorkbook workbook = new HSSFWorkbook();
第二步: 创建EXCEL sheet: HSSFSheet sheet = workbook.createSheet("sheetname");
第三步:创建行: HSSFRow row = sheet.creatRow(rowIndex) // rowIndex is short int >= 0
第四步:创建单元格: HSSFCell cell = row.creaCell(cellIndex) //cellIndex is short int >= 0
第五步:打开一个文件输出流: FileOutputStream out = new FileOutPutStream("FilePath.xls");
第六步:写文件: wb.write(out); out.close();
初始化一列数据:
for(int i = 0; i < rowNum; i++){
HSSFRow row = sheet.getRow(i);
if(row == null){
row = sheet.createRow(i);
}
HSSFCell cell = row.getCell(i);
if(cell == null){
cell = row.createCell(i);
}
cell.setCellValue(cellValue);
}
初始化sheet标题:
String[] titles = {"标题1","标题2","标题3","标题4","标题5","标题6"};
HSSFRow row = sheet.createRow((short)0);
HSSFCell cell = null;
for(int i = 0; i < titles.length; i++){
cell = row.createCell(i);
cell.setCellValue(titles[i]);
}
添加数据有效性:
方法一
// validata组成数据有效性的字符串
// firstRow 起始行
// lastRow 结束行
// firstCol 起始列
// lastCol 结束列
public static HSSFDataValidation setDataValidationList(String validata, int firstRow,int lastRow, int firstCol,int lastCol){
//for example validata = "a,b,c,d";
//加载下拉列表内容
DVConstraint constraint=DVConstraint.createExplicitListConstraint(validata.split("\\,"));
//数据有效性的区域
CellRangeAddressList regions = new CellRangeAddressList(firstRow,lastRow,firstCol,lastCol);
//数据有效性对象
HSSFDataValidataion data_validation_list = new HSSFDataValidation(regions,constraint);
return data_validation;
}
HSSFDataValidation dataValidation = setDataValidationList(validata,0,1000,3,3);
sheet.addValidationData(dataValidation);
方法一的不足之处:
数据有效性选项的长度会受到限制,好像是不能超过256个字。
因此出现了方法二
思路:新建一个隐藏的sheet,把数据有效性的选项放到该sheet的某一列中。然后在数据有效性原来所在的sheet中建立
一个映射。把数据有项性映射到隐藏sheet的某一列
HSSFSheet sheet = wb.creatSheet("hidden");
String[] validDatas = {"a","b","c","d","e"};
HSSFRow row = null;
HSSFCell cell = null;
for(int i = 0; i < validDatas.length; i++){
row = sheet.createRow(i);
cell = row.ceateCell(i);
cell.setCellValue(valiDatas[i]);
}
//1 代表hidden的索引 第一个 sheet的索引为0,第二个为1,依次类推
wb.setSheetHidden(1, true);
// 这一段我自己把它理解为建立一个名为myhidden的映射,不知道对不对
// 因为没有API,我是平自己的理解
Name namedCell = wb.createName();
namedCell.setNameName("myhidden");
//映射到hidden某一列
namedCell.setRefersToFormula("hidden!$A$1:$A$"+validatas.length);
//后面就一样了
DVConstraint constraint = DVConstraint.createFormulaListConstraint("myhidden");
CellRangeAddressList addressList = new CellRangeAddressList(1, 1000, 3, 3);
HSSFDataValidation validation = new HSSFDataValidation(addressList, constraint);
//获取Excel文件中sheet的数量
int numbers= wb.getNumberOfSheets();
这些都是我自己在做项目的时候总结出来的一些技巧,希望对大家有用。因为是手打,难免会有错漏,如果有什么不对的地方,大家不要见怪。
ps:我用的POI是3.9的
第一步:创建一个HSSFWorkbook: HSSFWorkbook workbook = new HSSFWorkbook();
第二步: 创建EXCEL sheet: HSSFSheet sheet = workbook.createSheet("sheetname");
第三步:创建行: HSSFRow row = sheet.creatRow(rowIndex) // rowIndex is short int >= 0
第四步:创建单元格: HSSFCell cell = row.creaCell(cellIndex) //cellIndex is short int >= 0
第五步:打开一个文件输出流: FileOutputStream out = new FileOutPutStream("FilePath.xls");
第六步:写文件: wb.write(out); out.close();
初始化一列数据:
for(int i = 0; i < rowNum; i++){
HSSFRow row = sheet.getRow(i);
if(row == null){
row = sheet.createRow(i);
}
HSSFCell cell = row.getCell(i);
if(cell == null){
cell = row.createCell(i);
}
cell.setCellValue(cellValue);
}
初始化sheet标题:
String[] titles = {"标题1","标题2","标题3","标题4","标题5","标题6"};
HSSFRow row = sheet.createRow((short)0);
HSSFCell cell = null;
for(int i = 0; i < titles.length; i++){
cell = row.createCell(i);
cell.setCellValue(titles[i]);
}
添加数据有效性:
方法一
// validata组成数据有效性的字符串
// firstRow 起始行
// lastRow 结束行
// firstCol 起始列
// lastCol 结束列
public static HSSFDataValidation setDataValidationList(String validata, int firstRow,int lastRow, int firstCol,int lastCol){
//for example validata = "a,b,c,d";
//加载下拉列表内容
DVConstraint constraint=DVConstraint.createExplicitListConstraint(validata.split("\\,"));
//数据有效性的区域
CellRangeAddressList regions = new CellRangeAddressList(firstRow,lastRow,firstCol,lastCol);
//数据有效性对象
HSSFDataValidataion data_validation_list = new HSSFDataValidation(regions,constraint);
return data_validation;
}
HSSFDataValidation dataValidation = setDataValidationList(validata,0,1000,3,3);
sheet.addValidationData(dataValidation);
方法一的不足之处:
数据有效性选项的长度会受到限制,好像是不能超过256个字。
因此出现了方法二
思路:新建一个隐藏的sheet,把数据有效性的选项放到该sheet的某一列中。然后在数据有效性原来所在的sheet中建立
一个映射。把数据有项性映射到隐藏sheet的某一列
HSSFSheet sheet = wb.creatSheet("hidden");
String[] validDatas = {"a","b","c","d","e"};
HSSFRow row = null;
HSSFCell cell = null;
for(int i = 0; i < validDatas.length; i++){
row = sheet.createRow(i);
cell = row.ceateCell(i);
cell.setCellValue(valiDatas[i]);
}
//1 代表hidden的索引 第一个 sheet的索引为0,第二个为1,依次类推
wb.setSheetHidden(1, true);
// 这一段我自己把它理解为建立一个名为myhidden的映射,不知道对不对
// 因为没有API,我是平自己的理解
Name namedCell = wb.createName();
namedCell.setNameName("myhidden");
//映射到hidden某一列
namedCell.setRefersToFormula("hidden!$A$1:$A$"+validatas.length);
//后面就一样了
DVConstraint constraint = DVConstraint.createFormulaListConstraint("myhidden");
CellRangeAddressList addressList = new CellRangeAddressList(1, 1000, 3, 3);
HSSFDataValidation validation = new HSSFDataValidation(addressList, constraint);
//获取Excel文件中sheet的数量
int numbers= wb.getNumberOfSheets();
这些都是我自己在做项目的时候总结出来的一些技巧,希望对大家有用。因为是手打,难免会有错漏,如果有什么不对的地方,大家不要见怪。
ps:我用的POI是3.9的
- 用POI生成EXCEL文件的技巧与心得
- 用POI生成excel文件
- 用poi生成Excel文件
- POI生成excel文件
- Poi生成Excel文件
- 用poi生成自动筛选的Excel文件
- 使用poi生成Excel文件
- 使用POI生成Excel文件
- 使用POI生成Excel文件
- 使用poi生成Excel文件
- 使用POI生成Excel文件
- POI实现生成excel文件
- 使用POI生成Excel文件及使用POI在EXCEL文件中插入图片的方法
- 使用POI生成Excel文件及使用POI在EXCEL文件中插入图片的方法
- POI生成Excel文件/POI读取Excel文件
- 使用Apache POI生成指定格式的Excel文件
- java 利用 poi 生成 Excel文件的例子
- poi生成Excel的代码!
- Android自定义View-invalidate()
- 阻止保存要求重新创建表的更改
- paip.c++ qt __gxx_personality_sj0 __gxx_personality_v0问题的解决
- Kinect开发教程
- java中HashMap详解(转)
- 用POI生成EXCEL文件的技巧与心得
- META-INF文件夹中的MANIFEST.MF 有什么作用?
- AsyncQueryHandler 介绍
- linux nand bbt 坏块管理部分
- android开发环境安装(MyEclipse8.6+JDK+ADT)
- 六、总线结构(从上到下越来越牛逼)
- 飞秋FeiQ可以聊天,但无法传输文件
- [软件人生]非挖坑:35岁时搞技术还搞的动吗?
- Ext.define 方法