- public void groupRow(int fromRow, int toRow)
- public void setRowGroupCollapsed(int rowIndex, boolean collapse)
Source code for ExcelGroupData.java
package com.as400samplecode;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
public class ExcelGroupData {
public static void main(String[] args)
{
String excelFilename = null;
ExcelGroupData myExcel = new ExcelGroupData();
if (args.length < 1)
{
System.err.println("Usage: java "+ myExcel.getClass().getName()+
" Excel_Filename");
System.exit(1);
}
excelFilename = args[0].trim();
myExcel.generateExcel(excelFilename);
}
public void generateExcel(String excelFilename){
try {
//New Workbook
Workbook wb = new XSSFWorkbook();
Cell c = null;
//Cell style for header row
CellStyle cs = wb.createCellStyle();
cs.setFillForegroundColor(IndexedColors.LIME.getIndex());
cs.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
Font f = wb.createFont();
f.setBoldweight(Font.BOLDWEIGHT_BOLD);
f.setFontHeightInPoints((short) 12);
cs.setFont(f);
//Cell style for summary row
CellStyle css = wb.createCellStyle();
f = wb.createFont();
f.setBoldweight(Font.BOLDWEIGHT_BOLD);
f.setFontHeightInPoints((short) 10);
css.setFont(f);
//New Sheet
XSSFSheet sheet1 = null;
sheet1 = (XSSFSheet) wb.createSheet("myData");
// Row and column indexes
int idx = 0;
int idy = 0;
//Generate column headings
Row row = sheet1.createRow(idx);
c = row.createCell(idy);
c.setCellValue("Customer");
c.setCellStyle(cs);
sheet1.setColumnWidth(idy, 10 * 500);
idy++;
c = row.createCell(idy);
c.setCellValue("Order Number");
c.setCellStyle(cs);
sheet1.setColumnWidth(idy, 10 * 500);
idy++;
c = row.createCell(idy);
c.setCellValue("Order Total");
c.setCellStyle(cs);
sheet1.setColumnWidth(idy, 10 * 500);
idy++;
//Skip 2 rows and reset column
idx = idx + 3;
idy = 0;
//Populate detail row data
int firstRow = idx + 1;
row = sheet1.createRow(idx);
c = row.createCell(idy);
c.setCellValue("ABC");
idy++;
c = row.createCell(idy);
c.setCellValue("101");
idy++;
c = row.createCell(idy);
c.setCellValue(10.99);
idy++;
//Next row and reset column
idx = idx + 1;
idy = 0;
//Populate detail row data
row = sheet1.createRow(idx);
c = row.createCell(idy);
c.setCellValue("ABC");
idy++;
c = row.createCell(idy);
c.setCellValue("102");
idy++;
c = row.createCell(idy);
c.setCellValue(22.23);
idy++;
//Next row and reset column
idx = idx + 1;
idy = 0;
//Populate detail row data
int lastRow = idx + 1;
row = sheet1.createRow(idx);
c = row.createCell(idy);
c.setCellValue("ABC");
idy++;
c = row.createCell(idy);
c.setCellValue("103");
idy++;
c = row.createCell(idy);
c.setCellValue(100.33);
idy++;
//Next row and reset column
idx = idx + 1;
idy = 0;
//Populate summary row data
row = sheet1.createRow(idx);
c = row.createCell(idy);
c.setCellValue("ABC");
c.setCellStyle(css);
idy++;
c = row.createCell(idy);
c.setCellValue("");
c.setCellStyle(css);
idy++;
c = row.createCell(idy);
String myFormula = "SUM(" + getColumnName(idy) + firstRow + ":" +
getColumnName(idy) + lastRow + ")";
c.setCellType(Cell.CELL_TYPE_FORMULA);
c.setCellFormula(myFormula);
c.setCellStyle(css);
idy++;
//Group the Rows together
sheet1.groupRow(firstRow-1,lastRow-1);
sheet1.setRowGroupCollapsed(firstRow-1, true);
FileOutputStream fileOut = new FileOutputStream(excelFilename.trim());
wb.write(fileOut);
fileOut.close();
}
catch (Exception e) {
System.out.println(e);
}
}
private String getColumnName(int columnNumber) {
String columnName = "";
int dividend = columnNumber + 1;
int modulus;
while (dividend > 0){
modulus = (dividend - 1) % 26;
columnName = (char)(65 + modulus) + columnName;
dividend = (int)((dividend - modulus) / 26);
}
return columnName;
}
}
To ungroup the rows and expand the rows use the following methods
- public void ungroupRow(int fromRow, int toRow)
- public void setRowGroupCollapsed(int rowIndex, false)


No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.