poi打印合并,上代码
来源:互联网 发布:xampp配置mysql端口 编辑:程序博客网 时间:2024/05/17 04:40
/**
* 合并单元格
* @param sheet 要合并单元格的excel 的sheet
* @param cellLine 要合并的列
* @param startRow 要合并列的开始行
* @param endRow 要合并列的结束行
*/
private static void addMergedRegion_Poi(HSSFSheet sheet, int cellLine, int startRow, int endRow,HSSFWorkbook workBook){
HSSFCellStyle style = workBook.createCellStyle(); // 样式对象
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
int strRow_1=startRow;
String s_will =null;
double num_will=0.0;
switch(sheet.getRow(startRow).getCell(cellLine).getCellType()){
case HSSFCell.CELL_TYPE_STRING:
s_will = sheet.getRow(strRow_1).getCell(cellLine).getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
num_will=sheet.getRow(strRow_1).getCell(cellLine).getNumericCellValue();
break;
}
//获取第一行的数据,以便后面进行比较
int count = 0;
boolean flag = false;
int count1 = 0;
boolean flag1 = false;
int nums_count=0;
for (int i = startRow; i <= endRow; i++) {
switch(sheet.getRow(startRow).getCell(cellLine).getCellType()){
case HSSFCell.CELL_TYPE_STRING:
String s_current=sheet.getRow(i!=endRow?i+1:i).getCell(cellLine).getStringCellValue();
if(i==endRow){
s_current="";
}
if(s_will.equals(s_current))
{
s_will = s_current;
startRow++;
count++;
}else{
sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine,cellLine));
HSSFRow row = sheet.getRow(startRow-count%2==0?startRow-count+1:startRow-count);
String cellValueTemp = sheet.getRow(startRow-count%2==0?startRow-count+1:startRow-count).getCell(cellLine).getStringCellValue();
HSSFCell cell = row.createCell(cellLine);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
cell.setCellStyle(style); // 样式
if(i!=endRow-1){
flag = true;
}
s_will = s_current;
startRow++;
count=0;
}
//由于上面循环中合并的单元放在有下一次相同单元格的时候做的,所以最后如果几行有相同单元格则要运行下面的合并单元格。
// if(i==endRow-1&&count>0)
// {
// sheet.addMergedRegion(new CellRangeAddress(endRow-count,endRow,cellLine,cellLine));
// String cellValueTemp = sheet.getRow(endRow-count).getCell(cellLine).getStringCellValue();
// HSSFRow row = sheet.getRow(endRow-count);
// HSSFCell cell = row.createCell(cellLine);
// cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
// cell.setCellStyle(style); // 样式
// }
break;
case HSSFCell.CELL_TYPE_NUMERIC:
double s_current1= sheet.getRow(i!=endRow?i+1:i).getCell(cellLine).getNumericCellValue();
if(i==endRow){
s_current="";
}
if(num_will==s_current1)
{
num_will = s_current1;
count1++;
if(flag1)
{
// sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine,cellLine));
// HSSFRow row = sheet.getRow(startRow);
// String cellValueTemp = sheet.getRow(startRow).getCell(cellLine).getStringCellValue();
// HSSFCell cell = row.createCell(cellLine);
// cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
// cell.setCellStyle(style); // 样式
count1 = 0;
flag1 = false;
}
startRow++;
count1++;
}else{
sheet.addMergedRegion(new CellRangeAddress(startRow-count1,startRow,cellLine,cellLine));
HSSFRow row = sheet.getRow(startRow-count1%2==0?startRow-count1+1:startRow-count1);
String cellValueTemp = sheet.getRow(startRow-count1%2==0?startRow-count1+1:startRow-count1).getCell(cellLine).getStringCellValue();
HSSFCell cell = row.createCell(cellLine);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
cell.setCellStyle(style); // 样式
if(i!=endRow-1){
flag1 = true;
}
num_will = s_current1;
startRow++;
}
break;
}
}
}
- poi打印合并,上代码
- POI打印
- POI打印
- POI写excel(带单元格合并)上
- 一段利用Apache的Poi合并Excel单元格的代码
- 邮件合并在打印学生信封上的应用
- poi excel合并单元格
- poi合并单元格
- POI.HSSF 合并单元格
- Apache POI 合并单元格
- POI 合并单元格
- POI合并单元格
- poi合并单元格
- POI 简单合并单元格
- poi 合并单元格 递归
- poi单元格合并
- POI 动态合并单元格
- java poi 合并单元格
- 初探 iOS8 中的 Size Class
- 第12周项目2-(1)求N组数的最大公约数
- File方法mkdir()方法和mkdirs()方法的区别
- 第12周项目 1.2 修改
- Turbo C 3.0安装及使用说明
- poi打印合并,上代码
- android手机状态解释,比如android.os.Build.VERSION.SDK
- html+css+js系列之三 css的入门
- VC6++下的那些颜色
- EJB详解
- Qt Cursor
- 字符串大小比较的规则?
- 对.NET系统架构改造的一点经验和教训
- 第十二周项目二 汉诺塔递归函数