没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
/**
* 合并单元格
* @param sheet 要合并单元格的excel 的sheet
* @param cellLine 要合并的列
* @param startRow 要合并列的开始行
* @param endRow 要合并列的结束行
*/
private static void addMergedRegion(HSSFSheet sheet, int cellLine, int startRow, int endRow,HSSFWorkbook workBook){
HSSFCellStyle style = workBook.createCellStyle(); // 样式对象
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
//获取第一行的数据,以便后面进行比较
String s_will = sheet.getRow(startRow).getCell(cellLine).getStringCellValue();
int count = 0;
boolean flag = false;
for (int i = 1; i <= endRow; i++) {
String s_current = sheet.getRow(i).getCell(cellLine).getStringCellValue();
System.out.println("第"+String.valueOf(i+1)+"行s_current======="+s_current);
if(s_will.equals(s_current))
{
s_will = s_current;
if(flag)
{
if(startRow!=0){
//不相同后,把前一次的列合并
sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine,cellLine));
* 合并单元格
* @param sheet 要合并单元格的excel 的sheet
* @param cellLine 要合并的列
* @param startRow 要合并列的开始行
* @param endRow 要合并列的结束行
*/
private static void addMergedRegion(HSSFSheet sheet, int cellLine, int startRow, int endRow,HSSFWorkbook workBook){
HSSFCellStyle style = workBook.createCellStyle(); // 样式对象
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
//获取第一行的数据,以便后面进行比较
String s_will = sheet.getRow(startRow).getCell(cellLine).getStringCellValue();
int count = 0;
boolean flag = false;
for (int i = 1; i <= endRow; i++) {
String s_current = sheet.getRow(i).getCell(cellLine).getStringCellValue();
System.out.println("第"+String.valueOf(i+1)+"行s_current======="+s_current);
if(s_will.equals(s_current))
{
s_will = s_current;
if(flag)
{
if(startRow!=0){
//不相同后,把前一次的列合并
sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine,cellLine));
System.out.println("坐标===="+String.valueOf(startRow-count)+String.valueOf(startRow)+String.valueOf(cellLine)+String.valueOf(cellLine));
HSSFRow row = sheet.getRow(startRow-count);
String cellValueTemp = sheet.getRow(startRow-count).getCell(cellLine).getStringCellValue();
System.out.println("cellLine===="+cellLine+"=====cellValueTem====="+cellValueTemp);
HSSFCell cell = row.createCell(cellLine);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
cell.setCellStyle(style); // 样式
count = 0;
flag = false;
}
}
startRow=i;
count++;
}else{
flag = true;
s_will = s_current;
}
//由于上面循环中合并的单元放在有下一次相同单元格的时候做的,所以最后如果几行有相同单元格则要运行下面的合并单元格。
if(i==endRow&&count>0)
{
System.out.println("方法2==========");
if(endRow!=0){
sheet.addMergedRegion(new CellRangeAddress(endRow-count,endRow,cellLine,cellLine));
System.out.println("方法2=======坐标===="+String.valueOf(endRow-count)+String.valueOf(endRow)+String.valueOf(cellLine)+String.valueOf(cellLine));
String cellValueTemp = sheet.getRow(startRow-count).getCell(cellLine).getStringCellValue();
System.out.println("方法2==cellLine===="+cellLine+"===cellValueTem====="+cellValueTemp);
HSSFRow row = sheet.getRow(startRow-count);
HSSFCell cell = row.createCell(cellLine);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
HSSFRow row = sheet.getRow(startRow-count);
String cellValueTemp = sheet.getRow(startRow-count).getCell(cellLine).getStringCellValue();
System.out.println("cellLine===="+cellLine+"=====cellValueTem====="+cellValueTemp);
HSSFCell cell = row.createCell(cellLine);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
cell.setCellStyle(style); // 样式
count = 0;
flag = false;
}
}
startRow=i;
count++;
}else{
flag = true;
s_will = s_current;
}
//由于上面循环中合并的单元放在有下一次相同单元格的时候做的,所以最后如果几行有相同单元格则要运行下面的合并单元格。
if(i==endRow&&count>0)
{
System.out.println("方法2==========");
if(endRow!=0){
sheet.addMergedRegion(new CellRangeAddress(endRow-count,endRow,cellLine,cellLine));
System.out.println("方法2=======坐标===="+String.valueOf(endRow-count)+String.valueOf(endRow)+String.valueOf(cellLine)+String.valueOf(cellLine));
String cellValueTemp = sheet.getRow(startRow-count).getCell(cellLine).getStringCellValue();
System.out.println("方法2==cellLine===="+cellLine+"===cellValueTem====="+cellValueTemp);
HSSFRow row = sheet.getRow(startRow-count);
HSSFCell cell = row.createCell(cellLine);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
剩余12页未读,继续阅读
资源评论
- LogenzLab2018-04-23换行换行换行换行
qq_30576841
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功