java生成复杂excel文件
1、先去 官网下载相关jar包入下:
2、代码实现:
public void fun() throws IOException {
//文件路径
String filePath = "C:\\Users\\Administrator\\Desktop\\file\\sample.xls";
//创建Excel文件(Workbook)
//HSSFWorkbook workbook = new HSSFWorkbook();
//创建工作表(Sheet)
// 声明String数组,并初始化元素(表头名称)
//第一行表头字段,合并单元格时字段跨几列就将该字段重复几次
String[] excelHeader0 = {"备注:", " ", " ", " ", " "," ", " ", " ", " "," ", " ", " ", " "," ", " ", " ", " "};
// “0,2,0,0” ===> “起始行,截止行,起始列,截止列”
String[] headnum0 = {"0,0,1,16"};
//第二行表头字段,其中的空的双引号是为了补全表格边框
String[] excelHeader1 = {"本周卫生负责人:", "", "", "","本月操作:", "", "", "", "","负责人:", "", "", "", "本月黑板报负责人:", "", "", ""};
// 合并单元格
String[] headnum1 = {"1,1,1,3", "1,1,5,8", "1,1,11,12", "1,1,14,16"};
//第三行表头字段
String[] excelHeader2 = {"疾病查房:", "", "", "", "主查者:", "", "", "", "应急演练:", "","", " ", " ", " ", "", " ", " "};
String[] headnum2 = {"2,2,1,3", "2,2,5,7", "2,2,9,16"};
String[] excelHeader3 = {"信息稿:", " ", " ", " ", " "," ", " ", " ", " "," ", " ", " ", " "," ", " ", " ", " "};
String[] headnum3 = {"3,3,1,16"};
String[] excelHeader4 = {"本月业务学习:", "", "", "", "内容:", "", "", "", "主讲者:", "","", " ", "形式: ", " ", "", " ", ""};
String[] headnum4 = {"4,4,1,3", "4,4,5,7", "4,4,9,11", "4,4,13,16"};
String[] excelHeader5 = {"第一周工作安排:", " ", " ", "第二周工作安排:", "", " ", "第三周工作按排:", " ", "", "第四周工作安排:"," ", " ", " 第五周工作安排:", " ", " ", "", ""};
String[] headnum5 = {"5,5,1,2", "5,5,4,5", "5,5,7,8", "5,5,10,11", "5,5,13,16"};
String[] excelHeader6 = {"备忘", " ", " ", " ", " "," ", " ", " ", " "," ", " ", " ", " "," ", " ", " ", " "};
String[] headnum6 = {"6,6,1,16"};
// 声明一个工作簿
HSSFWorkbook wb = new HSSFWorkbook();
// 生成一个表格
HSSFSheet sheet = wb.createSheet();
//创建工作表(Sheet)
sheet = wb.createSheet("Test");
// 生成一种样式
HSSFCellStyle style = wb.createCellStyle();
// 设置样式
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 生成一种字体
HSSFFont font = wb.createFont();
// 设置字体
font.setFontName("微软雅黑");
// 设置字体大小
font.setFontHeightInPoints((short) 12);
// 字体加粗
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 在样式中引用这种字体
style.setFont(font);
// 生成表格的第一行
// 第一行表头
HSSFRow row = sheet.createRow(0);
for (int i = 0; i < excelHeader0.length; i++) {
sheet.autoSizeColumn(i, true);// 根据字段长度自动调整列的宽度
HSSFCell cell = row.createCell(i);
cell.setCellValue(excelHeader0[i]);
cell.setCellStyle(style);
// System.out.println(excelHeader0[i]);
if (i >= 0 && i <= 16) {
for (int j = 1; j < excelHeader0.length; j++) {
// 从第j列开始填充
cell = row.createCell(j);
// 填充excelHeader1[j]第j个元素
cell.setCellValue(excelHeader0[j]);
cell.setCellStyle(style);
}
}
row.setHeight((short)512);
// 设置列宽
sheet.setColumnWidth(0, 20*256);
sheet.setColumnWidth(1, 3000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 4500);
sheet.setColumnWidth(4, 3000);
sheet.setColumnWidth(5, 3000);
sheet.setColumnWidth(6, 4500);
sheet.setColumnWidth(7, 3000);
sheet.setColumnWidth(8, 3000);
sheet.setColumnWidth(9, 4500);
sheet.setColumnWidth(10, 3000);
sheet.setColumnWidth(11, 3000);
sheet.setColumnWidth(12, 4500);
sheet.setColumnWidth(13, 4600);
sheet.setColumnWidth(14, 3000);
sheet.setColumnWidth(15, 3000);
sheet.setColumnWidth(16, 3000);
}
// 动态合并单元格
for (int i = 0; i < headnum0.length; i++) {
sheet.autoSizeColumn(i, true);
String[] temp = headnum0[i].split(",");
Integer startrow = Integer.parseInt(temp[0]);
Integer overrow = Integer.parseInt(temp[1]);
Integer startcol = Integer.parseInt(temp[2]);
Integer overcol = Integer.parseInt(temp[3]);
sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
}
// 第二行表头
row = sheet.createRow(1);
for (int i = 0; i < excelHeader1.length; i++) {
// 自动调整宽度
sheet.autoSizeColumn(i, true);
HSSFCell cell = row.createCell(i + 1);
cell.setCellValue(excelHeader1[i]);
cell.setCellStyle(style);
row.setHeight((short)512);
if (i >= 0 && i <= 16) {
for (int j = 0; j < excelHeader1.length; j++) {
// 从第j+1列开始填充
cell = row.createCell(j );
// 填充excelHeader1[j]第j个元素
cell.setCellValue(excelHeader1[j]);
cell.setCellStyle(style);
}
}
sheet.setColumnWidth(0, 20*256);
sheet.setColumnWidth(1, 3000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 4500);
sheet.setColumnWidth(4, 3000);
sheet.setColumnWidth(5, 3000);
sheet.setColumnWidth(6, 4500);
sheet.setColumnWidth(7, 3000);
sheet.setColumnWidth(8, 3000);
sheet.setColumnWidth(9, 4500);
sheet.setColumnWidth(10, 3000);
sheet.setColumnWidth(11, 3000);
sheet.setColumnWidth(12, 4500);
sheet.setColumnWidth(13, 4600);
sheet.setColumnWidth(14, 3000);
sheet.setColumnWidth(15, 3000);
sheet.setColumnWidth(16, 3000);
}
// 动态合并单元格
for (int i = 0; i < headnum1.length; i++) {
// sheet.autoSizeColumn(i, true);
String[] temp = headnum1[i].split(",");
Integer startrow = Integer.parseInt(temp[0]);
Integer overrow = Integer.parseInt(temp[1]);
Integer startcol = Integer.parseInt(temp[2]);
Integer overcol = Integer.parseInt(temp[3]);
sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
}
// 第三行表头
row = sheet.createRow(2);
for (int i = 0; i < excelHeader2.length; i++) {
HSSFCell cell = row.createCell(i + 2);
cell.setCellValue(excelHeader2[i]);
cell.setCellStyle(style);
// System.out.println(excelHeader2[i]);
// sheet.autoSizeColumn(i, true);// 自动调整宽度
row.setHeight((short)512);
if (i >= 0 && i <= 16) {
for (int j = 0; j < excelHeader2.length; j++) {
// 从第j+2列开始填充
cell = row.createCell(j);
// 填充excelHeader1[j]第j个元素
cell.setCellValue(excelHeader2[j]);
cell.setCellStyle(style);
}
}
sheet.setColumnWidth(0, 20*256);
sheet.setColumnWidth(1, 3000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 4500);
sheet.setColumnWidth(4, 3000);
sheet.setColumnWidth(5, 3000);
sheet.setColumnWidth(6, 4500);
sheet.setColumnWidth(7, 3000);
sheet.setColumnWidth(8, 3000);
sheet.setColumnWidth(9, 4500);
sheet.setColumnWidth(10, 3000);
sheet.setColumnWidth(11, 3000);
sheet.setColumnWidth(12, 4500);
sheet.setColumnWidth(13, 4600);
sheet.setColumnWidth(14, 3000);
sheet.setColumnWidth(15, 3000);
sheet.setColumnWidth(16, 3000);
}
// 动态合并单元格
for (int i = 0; i < headnum2.length; i++) {
// sheet.autoSizeColumn(i, true);
String[] temp = headnum2[i].split(",");
Integer startrow = Integer.parseInt(temp[0]);
Integer overrow = Integer.parseInt(temp[1]);
Integer startcol = Integer.parseInt(temp[2]);
Integer overcol = Integer.parseInt(temp[3]);
sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
}
row = sheet.createRow(3);
for (int i = 0; i < excelHeader3.length; i++) {
HSSFCell cell = row.createCell(i + 2);
cell.setCellValue(excelHeader3[i]);
cell.setCellStyle(style);
// System.out.println(excelHea;// 自动调整宽度
row.setHeight((short)512);
if (i >=0 && i <= 16) {
for (int j = 0; j < excelHeader3.length; j++) {
// 从第j+2列开始填充
cell = row.createCell(j);
// 填充excelHeader1[j]第j个元素
cell.setCellValue(excelHeader3[j]);
cell.setCellStyle(style);
}
}
sheet.setColumnWidth(0, 20*256);
sheet.setColumnWidth(1, 3000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 4500);
sheet.setColumnWidth(4, 3000);
sheet.setColumnWidth(5, 3000);
sheet.setColumnWidth(6, 4500);
sheet.setColumnWidth(7, 3000);
sheet.setColumnWidth(8, 3000);
sheet.setColumnWidth(9, 4500);
sheet.setColumnWidth(10, 3000);
sheet.setColumnWidth(11, 3000);
sheet.setColumnWidth(12, 4500);
sheet.setColumnWidth(13, 4600);
sheet.setColumnWidth(14, 3000);
sheet.setColumnWidth(15, 3000);
sheet.setColumnWidth(16, 3000);
}
// 动态合并单元格
for (int i = 0; i < headnum3.length; i++) {
// sheet.autoSizeColumn(i, true);
String[] temp = headnum3[i].split(",");
Integer startrow = Integer.parseInt(temp[0]);
Integer overrow = Integer.parseInt(temp[1]);
Integer startcol = Integer.parseInt(temp[2]);
Integer overcol = Integer.parseInt(temp[3]);
sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
}
row = sheet.createRow(4);
for (int i = 0; i < excelHeader4.length; i++) {
HSSFCell cell = row.createCell(i + 2);
cell.setCellValue(excelHeader4[i]);
cell.setCellStyle(style);
// System.out.println(excelHeader2[i]);
// sheet.autoSizeColumn(i, true);// 自动调整宽度
row.setHeight((short)512);
if (i >= 0 && i <= 16) {
for (int j = 0; j < excelHeader4.length; j++) {
// 从第j+2列开始填充
cell = row.createCell(j);
// 填充excelHeader1[j]第j个元素
cell.setCellValue(excelHeader4[j]);
cell.setCellStyle(style);
}
}
sheet.setColumnWidth(0, 20*256);
sheet.setColumnWidth(1, 3000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 4500);
sheet.setColumnWidth(4, 3000);
sheet.setColumnWidth(5, 3000);
sheet.setColumnWidth(6, 4500);
sheet.setColumnWidth(7, 3000);
sheet.setColumnWidth(8, 3000);
sheet.setColumnWidth(9, 4500);
sheet.setColumnWidth(10, 3000);
sheet.setColumnWidth(11, 3000);
sheet.setColumnWidth(12, 4500);
sheet.setColumnWidth(13, 4600);
sheet.setColumnWidth(14, 3000);
sheet.setColumnWidth(15, 3000);
sheet.setColumnWidth(16, 3000);
}
// 动态合并单元格
for (int i = 0; i < headnum4.length; i++) {
// sheet.autoSizeColumn(i, true);
String[] temp = headnum4[i].split(",");
Integer startrow = Integer.parseInt(temp[0]);
Integer overrow = Integer.parseInt(temp[1]);
Integer startcol = Integer.parseInt(temp[2]);
Integer overcol = Integer.parseInt(temp[3]);
sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
}
row = sheet.createRow(5);
for (int i = 0; i < excelHeader5.length; i++) {
HSSFCell cell = row.createCell(i + 2);
cell.setCellValue(excelHeader5[i]);
cell.setCellStyle(style);
// System.out.println(excelHeader2[i]);
// sheet.autoSizeColumn(i, true);// 自动调整宽度
row.setHeight((short)1500);
if (i >= 0 && i <= 16) {
for (int j = 0; j < excelHeader5.length; j++) {
// 从第j+2列开始填充
cell = row.createCell(j);
// 填充excelHeader1[j]第j个元素
cell.setCellValue(excelHeader5[j]);
cell.setCellStyle(style);
}
}
sheet.setColumnWidth(0, 20*256);
sheet.setColumnWidth(1, 3000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 4500);
sheet.setColumnWidth(4, 3000);
sheet.setColumnWidth(5, 3000);
sheet.setColumnWidth(6, 4500);
sheet.setColumnWidth(7, 3000);
sheet.setColumnWidth(8, 3000);
sheet.setColumnWidth(9, 4500);
sheet.setColumnWidth(10, 3000);
sheet.setColumnWidth(11, 3000);
sheet.setColumnWidth(12, 4500);
sheet.setColumnWidth(13, 4600);
sheet.setColumnWidth(14, 3000);
sheet.setColumnWidth(15, 3000);
sheet.setColumnWidth(16, 3000);
}
// 动态合并单元格
for (int i = 0; i < headnum5.length; i++) {
// sheet.autoSizeColumn(i, true);
String[] temp = headnum5[i].split(",");
Integer startrow = Integer.parseInt(temp[0]);
Integer overrow = Integer.parseInt(temp[1]);
Integer startcol = Integer.parseInt(temp[2]);
Integer overcol = Integer.parseInt(temp[3]);
sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
}
row = sheet.createRow(6);
for (int i = 0; i < excelHeader6.length; i++) {
HSSFCell cell = row.createCell(i + 2);
cell.setCellValue(excelHeader6[i]);
cell.setCellStyle(style);
// System.out.println(excelHeader2[i]);
// sheet.autoSizeColumn(i, true);// 自动调整宽度
row.setHeight((short)512);
if (i >= 0 && i <= 16) {
for (int j = 0; j < excelHeader6.length; j++) {
// 从第j+2列开始填充
cell = row.createCell(j);
// 填充excelHeader1[j]第j个元素
cell.setCellValue(excelHeader6[j]);
cell.setCellStyle(style);
}
}
sheet.setColumnWidth(0, 20*256);
sheet.setColumnWidth(1, 3000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 4500);
sheet.setColumnWidth(4, 3000);
sheet.setColumnWidth(5, 3000);
sheet.setColumnWidth(6, 4500);
sheet.setColumnWidth(7, 3000);
sheet.setColumnWidth(8, 3000);
sheet.setColumnWidth(9, 4500);
sheet.setColumnWidth(10, 3000);
sheet.setColumnWidth(11, 3000);
sheet.setColumnWidth(12, 4500);
sheet.setColumnWidth(13, 4600);
sheet.setColumnWidth(14, 3000);
sheet.setColumnWidth(15, 3000);
sheet.setColumnWidth(16, 3000);
}
// 动态合并单元格
for (int i = 0; i < headnum6.length; i++) {
// sheet.autoSizeColumn(i, true);
String[] temp = headnum6[i].split(",");
Integer startrow = Integer.parseInt(temp[0]);
Integer overrow = Integer.parseInt(temp[1]);
Integer startcol = Integer.parseInt(temp[2]);
Integer overcol = Integer.parseInt(temp[3]);
sheet.addMergedRegion(new CellRangeAddress(startrow, overrow, startcol, overcol));
}
FileOutputStream out = new FileOutputStream(filePath);
//保存Excel文件
wb.write(out);
//关闭文件流
out.close();
System.out.println("OK!");
}
3、效果预览
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:31
阅读量:30
阅读量:54
阅读量:76
阅读量:74