后台操作:

 @RequestMapping("/export")
public void export(HttpServletRequest resquest,HttpServletResponse response){
try {
/**
* web端生成保存打开excel弹出框
*/
response.setContentType("application/x-msdownload;charset=gbk");
String fileName = "课程表.xls";
String fileNameTemp = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileNameTemp.getBytes("utf-8"), "gbk"));
OutputStream os = response.getOutputStream();
System.out.println("****start*****");
//打开文件
WritableWorkbook book= Workbook.createWorkbook(os);
//生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheetOne=book.createSheet("第一页",0);
/**
* 非web端的话可以直接采用如下
* 打开文件
* WritableWorkbook book= Workbook.createWorkbook(new File("测试.xls"));
* 生成名为“第一页”的工作表,参数0表示这是第一页
* WritableSheet sheetOne=book.createSheet("第一页",0);
*/
/**
* 定义单元格样式
*/
WritableFont wf_title = new WritableFont(WritableFont.ARIAL, 11,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
WritableFont wf_head = new WritableFont(WritableFont.ARIAL, 11,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
WritableFont wf_table = new WritableFont(WritableFont.ARIAL, 11,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
WritableCellFormat wcf_title = new WritableCellFormat(wf_title); // 单元格定义
wcf_title.setBackground(jxl.format.Colour.WHITE); // 设置单元格的背景颜色
wcf_title.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
wcf_title.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 设置垂直对齐方式
wcf_title.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); //设置边框
WritableCellFormat wcf_title1 = new WritableCellFormat(wf_title); // 单元格定义
wcf_title1.setBackground(jxl.format.Colour.LIGHT_GREEN); // 设置单元格的背景颜色
wcf_title1.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
wcf_title1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 设置垂直对齐方式
wcf_title1.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); //设置边框
WritableCellFormat wcf_title2 = new WritableCellFormat(wf_title); // 单元格定义
wcf_title2.setBackground(jxl.format.Colour.YELLOW2); // 设置单元格的背景颜色
wcf_title2.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
wcf_title2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 设置垂直对齐方式
wcf_title2.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); //设置边框
WritableCellFormat wcf_head1 = new WritableCellFormat(wf_head);
wcf_head1.setBackground(jxl.format.Colour.LIGHT_GREEN);
wcf_head1.setAlignment(jxl.format.Alignment.CENTRE);
wcf_head1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 设置垂直对齐方式
wcf_head1.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK);
WritableCellFormat wcf_head2 = new WritableCellFormat(wf_head);
wcf_head2.setBackground(jxl.format.Colour.YELLOW2);
wcf_head2.setAlignment(jxl.format.Alignment.CENTRE);
wcf_head2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 设置垂直对齐方式
wcf_head2.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK);
WritableCellFormat wcf_table1 = new WritableCellFormat(wf_table);
wcf_table1.setBackground(jxl.format.Colour.LIGHT_GREEN);
wcf_table1.setAlignment(jxl.format.Alignment.CENTRE);
wcf_table1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 设置垂直对齐方式
wcf_table1.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK);
WritableCellFormat wcf_table2 = new WritableCellFormat(wf_table);
wcf_table2.setBackground(jxl.format.Colour.YELLOW2);
wcf_table2.setAlignment(jxl.format.Alignment.CENTRE);
wcf_table2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 设置垂直对齐方式
wcf_table2.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK);
sheetOne.setColumnView(0, 15); // 设置列的宽度
sheetOne.setColumnView(1, 15); // 设置列的宽度
sheetOne.setColumnView(2, 15); // 设置列的宽度
sheetOne.setColumnView(3, 15); // 设置列的宽度
sheetOne.setColumnView(4, 15); // 设置列的宽度
sheetOne.setColumnView(5, 15); // 设置列的宽度
sheetOne.setColumnView(6, 15); // 设置列的宽度
sheetOne.setColumnView(7, 15); // 设置列的宽度
sheetOne.setColumnView(8, 15); // 设置列的宽度
sheetOne.setColumnView(9, 15); // 设置列的宽度
sheetOne.setColumnView(10, 15); // 设置列的宽度
sheetOne.setColumnView(11, 15); // 设置列的宽度
sheetOne.setColumnView(12, 15); // 设置列的宽度
sheetOne.setColumnView(13, 15); // 设置列的宽度
//在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
//以及单元格内容为test
Label title=new Label(0,0,"统计",wcf_title);
Label titleOne=new Label(0,1,"统计1",wcf_title1);
Label titleTwo=new Label(2,1,"统计2",wcf_title2);
Label column1=new Label(0,2,"姓名",wcf_head1);
Label column2=new Label(1,2,"所选课程",wcf_head1);
Label column3=new Label(2,2,"姓名",wcf_head2);
Label column4=new Label(3,2,"所选课程",wcf_head2);
//或者WritableCell cell =  new jxl.write.Number(column, row, value, wcf)
//将定义好的单元格添加到工作表中
sheetOne.addCell(title);
sheetOne.addCell(titleOne);
sheetOne.addCell(titleTwo);
sheetOne.addCell(column1);
sheetOne.addCell(column2);
sheetOne.addCell(column3);
sheetOne.addCell(column4);
//合: 第1列第1行  到 第13列第1行
sheetOne.mergeCells(0, 0, 3, 0);
sheetOne.mergeCells(0, 1, 1, 1);
sheetOne.mergeCells(2, 1, 3, 1);
/*动态数据   */
Label content1=new Label(0,3,"张三",wcf_table1);
Label content2=new Label(0,4,"张三",wcf_table1);
Label content3=new Label(0,5,"张三",wcf_table1);
Label kecheg1=new Label(1,3,"语文",wcf_table1);
Label kecheg2=new Label(1,4,"数学",wcf_table1);
Label kecheg3=new Label(1,5,"英语",wcf_table1);
sheetOne.addCell(content1);
sheetOne.addCell(content2);
sheetOne.addCell(content3);
sheetOne.addCell(kecheg1);
sheetOne.addCell(kecheg2);
sheetOne.addCell(kecheg3);
sheetOne.mergeCells(0, 3, 0, 2+3);
Label content11=new Label(2,3,"李四",wcf_table2);
Label content22=new Label(2,4,"李四",wcf_table2);
Label content33=new Label(2,5,"李四",wcf_table2);
Label kecheg11=new Label(3,3,"语文",wcf_table2);
Label kecheg22=new Label(3,4,"数学",wcf_table2);
Label kecheg33=new Label(3,5,"英语",wcf_table2);
sheetOne.addCell(content11);
sheetOne.addCell(content22);
sheetOne.addCell(content33);
sheetOne.addCell(kecheg11);
sheetOne.addCell(kecheg22);
sheetOne.addCell(kecheg33);
sheetOne.mergeCells(2, 3, 2, 2+3);
//写入数据并关闭文件
book.write();
book.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}

jxl操作合并单元格复杂表头相关推荐

  1. SAP ALV合并单元格示例(合并单元格为表头)

    前言 实现参考Enno Wulff的文章(德文):Zellen verbinden 在原有基础上新增了部分功能(支持输入合并单元格的显示值) 效果 代码 主程序 *&------------- ...

  2. bootstraptable合并标题_bootstrapTable 合并单元格

    /** * 合并单元格 * @param data 原始数据(在服务端完成排序) * @param fieldName 合并属性名称 * @param colspan 合并列 * @param tar ...

  3. excel模板合并单元格(jxls 合并单元格)---工具net.sf.jxls扩展---支持合并单元格(无需代码方式合并)

    概述 excel比较常用的工具类就是poi和jxl当然后者已经停止维护很久而且只支持excel2003,不支持excel2007. 对2003版,最大行数是65536行 ,对2007以上版本,最大行数 ...

  4. apache poi合并单元格设置边框

    HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet();//创建一个样式 HSSFCellStyle style ...

  5. apache poi斜边框线_apache poi合并单元格设置边框

    HSSFWorkbook wb = newHSSFWorkbook(); HSSFSheet sheet=wb.createSheet();//创建一个样式 HSSFCellStyle styleBo ...

  6. jxl操作excel(合并单元格,设置背景色,字体颜色)

    现在正在做的项目中涉及大量的Excel文件导出导入操作,都是使用Java Excel来操作. Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Exce ...

  7. java操作导出Excel(jxl导出WritableWorkbook)jxl合并单元格,单元格的设置,单元格居中、字体、大小、换行、合并行,列宽、自动换行撑起高度、指定特定字符串样式等

    new WritableCellFormat().setWrap(true);//通过调整宽度和高度自动换行 1.1     需求描述 MS的电子表格(Excel)是Office的重要成员,是保存统计 ...

  8. 【Easyexcel】使用easyexcel导出带有固定表头的excel代码,并且有合并单元格操作

    以下是一个使用EasyExcel导出带有固定表头并且带有合并单元格的Excel代码示例: //创建excel对象 ExcelWriter writer = EasyExcel.write(" ...

  9. JXL 对excle 操作(单元格合并,列宽,格式等)《二》

    一. 数据格式化 在Excel中不涉及复杂的数据类型,能够比较好的处理字串.数字和日期已经能够满足一般的应用. 1. 字串格式化 字符串的格式化涉及到的是字体.粗细.字号等元素,这些功能主要由Writ ...

最新文章

  1. Android深度探索与驱动开发(一)
  2. linux内核map图
  3. 收藏!最新大数据产业地图 十大生态金矿百大公司起底【附下载】
  4. 小米视频加载进度条效果实现
  5. JQuery-- 获取元素的宽高、获取浏览器的宽高和垂直滚动距离
  6. upc组队赛1 小C的数学问题【单调栈】(POJ2796)
  7. Zw*与Nt*的区别
  8. fir.im Weekly - 2016 年 Android 最佳实践列表
  9. ZZULIOJ 1077: 空心菱形
  10. 中南大学c语言试题期末考试,2011年中南大学C语言期末试题卷A
  11. Mac OS10.12 编译Android源码8.1
  12. 学生用计算机的按键名称,计算器各个键的功能
  13. Java是什么?Java能干什么工作?
  14. 智能分析的所见即所得——基于Lambda架构的实时数据引擎
  15. 力扣 6181. 最长的字母序连续子字符串的长度
  16. 给零基础初学者推荐的10个Python免费学习网站,赶快收藏
  17. 树莓派GPIO 基础(二)
  18. 软工专硕考研_18武汉理工大学软工专硕考研经验分享(学渣版)
  19. LOESS 局部加权回归介绍
  20. 共享软件开发者、独立软件开发者

热门文章

  1. 从输入URL到页面加载的过程?由一道题完善自己的前端知识体系!
  2. 加油卡充值 数据接口
  3. 慧正工作流注册码获取
  4. Mac系统恢复以及Mac键盘快捷键 官方方法
  5. BAM: Bottleneck Attention Module算法笔记
  6. win10 查看笔记本电池循环次数
  7. 重构之处理IE浏览器兼容问题
  8. 解决烘焙光照贴图有黑斑
  9. .pdm打开软件powerdesigner良心文章
  10. HCIA网络基础18-PPPoE