java生成一个excel中有多个sheet
生成excel时,对象SXSSFWorkbook中一个sheet存放的数据行数是有限制的,应该是一个sheet存放一百多万条数据。当数据超过这个限制就要考虑新建一个sheet存放剩下的数据。依次类推,再超过再创建。
代码如下:
// An highlighted block
public static SXSSFWorkbook createExcel(List list, String[] string) throws Exception {
int rowSheet = 1048500;// 每个sheet放多少行数据。这里自己可以设置,但不要超过sheet的限制。
int count = list.size();
int num = count % rowSheet;
int sheetNum;// 要创建多少个sheet
if (num == 0) {
sheetNum = count / rowSheet;
} else {
sheetNum = count / rowSheet + 1;
}
// 创建excel工作簿
SXSSFWorkbook wb = new SXSSFWorkbook();
// 创建字体、可以设置样式
Font f = wb.createFont();
// 创建单元格格式、可以设置样式
CellStyle cs = wb.createCellStyle();
for (int n = 1; n <= sheetNum; n++) {
SXSSFSheet sheet = wb.createSheet("sheet名称" + n);// 新创建一个sheet
// 创建一个sheet
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
for (int j = 0; j < string.length; j++) {
if (StringUtils.stringisEmpty(string[j])) {
continue;
}
// 手动设置列宽。第一个参数表示要为第几列设;,第二个参数表示列的宽度,n为列高的像素数。
sheet.setColumnWidth(j, (45 * 150));
cell = row