jxl操作excel

public ActionForward toExcelYk(ActionMapping arg0, ActionForm arg1,
   HttpServletRequest arg2, HttpServletResponse arg3) {
  ClientDataSetForm form = (ClientDataSetForm) arg1;
  try {
   System.err.println("开始导出");
   BufferedInputStream bis = null;
   ServletOutputStream outfile = null;
   arg3.reset();
   arg3.setContentType("application/octet-stream");
   Record rd = form.getRecord();
   String temp = rd.getString("CREATE_DATE");
   if (null == temp || "".equals(temp)) {
    throw new Exception("导出日期为空");
   }
   String dateStr = temp.substring(0, 4) + temp.substring(5, 7)
     + temp.substring(8, 10);

   String fileName = "地调EMS遥控动作情况表(佛山" + dateStr + ").xls";
   String fileNameNew = new String(fileName.getBytes("gb2312"),
     "iso8859-1");
   arg3.setHeader("Content-disposition", "attachment; filename="
     + fileNameNew);
   outfile = arg3.getOutputStream();

   BufferedOutputStream bos = new BufferedOutputStream(outfile);
   // 打开文件
   WritableWorkbook book = Workbook.createWorkbook(bos);
   // 生成名为"第一页"的工作表,参数0标示这是第一页
   WritableSheet sheet = book.createSheet("Sheet1", 0);
   // 设置列的宽度
   sheet.setColumnView(0, 6);
   sheet.setColumnView(1, 12);
   sheet.setColumnView(2, 12);
   sheet.setColumnView(3, 12);
   sheet.setColumnView(4, 12);
   sheet.setColumnView(5, 12);
   sheet.setColumnView(6, 12);
   sheet.setColumnView(7, 12);
   sheet.setColumnView(8, 12);
   sheet.setColumnView(9, 12);
   // 设置行的高度

   // 在label对象的构造子中指明单元格位置是第一列第一行(0,0)
   // 以及单元格内容为test
   Label label0 = new Label(0, 0, "表1:遥控操作情况", setTitle(10));
   Label label1 = new Label(0, 1, "序号", setTitle(10));
   Label label2 = new Label(1, 1, "地调", setTitle(10));
   Label label3 = new Label(2, 1, "具备遥控功能的变电站个数", setTitle(10));
   Label label4 = new Label(2, 2, "500KV", setTitle(10));
   Label label5 = new Label(3, 2, "220KV", setTitle(10));
   Label label6 = new Label(4, 1, "遥控操作次数", setTitle(10));
   Label label7 = new Label(5, 1, "AVC遥控次数", setTitle(10));
   Label label8 = new Label(6, 1, "遥控总次数", setTitle(10));
   Label label9 = new Label(7, 1, "遥控拒动次数", setTitle(10));
   Label label10 = new Label(8, 1, "遥控误动次数", setTitle(10));
   Label label11 = new Label(9, 1, "遥控正确动作率", setTitle(10));

   Label label12 = new Label(0, 7, "表2:遥控失败情况", setTitle(10));
   Label label13 = new Label(0, 8, "序号", setTitle(10));
   Label label14 = new Label(1, 8, "地调", setTitle(10));
   Label label15 = new Label(2, 8, "电压等级", setTitle(10));
   Label label16 = new Label(3, 8, "遥控失败情况", setTitle(10));
   Label label17 = new Label(6, 8, "遥控失败原因", setTitle(10));
   Label label18 = new Label(0, 13, "备注", setTitle(10));
   Label label19 = new Label(
     1,
     13,
     "1、遥控操作次数:调度监控人员在地调EMS上对500/220/110/35/10kV断路器、刀闸设备进行遥控操作总次数",
     setTitleL(10));
   Label label20 = new Label(1, 14, "2、AVC遥控次数:地调AVC遥控总次数",
     setTitleL(10));
   Label label21 = new Label(1, 15, "3、“遥控操作次数、AVC遥控次数”不包括遥控试验进行的操作",
     setTitleL(10));
   Label label22 = new Label(1, 16, "4、认真统计遥控拒动次数、遥控误动次数,深入分析原因",
     setTitleL(10));
   Label label23 = new Label(1, 17,
     "5、x=x1+x2,z=(x1+x2-y1-y2)/(x1+x2)", setTitleL(10));
   Label label24 = new Label(
     1,
     18,
     "6、统计时段:工作日(昨天16:00-今天16:00),休息日/节假日(上一工作日16:00-休息日/节假日最后一日16:00,如周日统计上周五16:00-周日16:00)",
     setTitleL(10));
   Label label25 = new Label(1, 20,
     "7、上报时间:工作日(16:30前),休息日/节假日(休息日/节假日最后一日16:30前)",
     setTitleL(10));
   Label label26 = new Label(1, 21,
     "8、上报方式:通过OAK发送到“自动化值班/自动化部/调控中心/Geph”邮箱", setTitleL(10));

   // 将定义好的单元格添加到工作表中
   sheet.addCell(label0);
   sheet.addCell(label1);
   sheet.addCell(label2);
   sheet.addCell(label3);
   sheet.addCell(label4);
   sheet.addCell(label5);
   sheet.addCell(label6);
   sheet.addCell(label7);
   sheet.addCell(label8);
   sheet.addCell(label9);
   sheet.addCell(label10);
   sheet.addCell(label11);
   sheet.addCell(label12);
   sheet.addCell(label13);
   sheet.addCell(label14);
   sheet.addCell(label15);
   sheet.addCell(label16);
   sheet.addCell(label17);
   sheet.addCell(label18);
   sheet.addCell(label19);
   sheet.addCell(label20);
   sheet.addCell(label21);
   sheet.addCell(label22);
   sheet.addCell(label23);
   sheet.addCell(label24);
   sheet.addCell(label25);
   sheet.addCell(label26);

   // 从col1到col2列 从row1行到row2行
   // mergecells(int col1,int row1,int col2,int row2);
   sheet.mergeCells(0, 0, 9, 0);// 合并单元格
   sheet.mergeCells(0, 1, 0, 2);// 合并单元格
   sheet.mergeCells(1, 1, 1, 2);// 合并单元格
   sheet.mergeCells(2, 1, 3, 1);// 合并单元格
   sheet.mergeCells(2, 2, 2, 2);// 合并单元格
   sheet.mergeCells(3, 2, 3, 2);// 合并单元格
   sheet.mergeCells(4, 1, 4, 2);// 合并单元格
   sheet.mergeCells(5, 1, 5, 2);// 合并单元格
   sheet.mergeCells(6, 1, 6, 2);// 合并单元格
   sheet.mergeCells(7, 1, 7, 2);// 合并单元格
   sheet.mergeCells(8, 1, 8, 2);// 合并单元格
   sheet.mergeCells(9, 1, 9, 2);// 合并单元格

   sheet.mergeCells(0, 7, 9, 7);// 合并单元格
   sheet.mergeCells(3, 8, 5, 8);// 合并单元格
   sheet.mergeCells(6, 8, 9, 8);// 合并单元格

   sheet.mergeCells(0, 13, 0, 21);// 合并单元格
   sheet.mergeCells(1, 13, 9, 13);// 合并单元格
   sheet.mergeCells(1, 14, 9, 14);// 合并单元格
   sheet.mergeCells(1, 15, 9, 15);// 合并单元格
   sheet.mergeCells(1, 16, 9, 16);// 合并单元格
   sheet.mergeCells(1, 17, 9, 17);// 合并单元格
   sheet.mergeCells(1, 18, 9, 19);// 合并单元格
   sheet.mergeCells(1, 20, 9, 20);// 合并单元格
   sheet.mergeCells(1, 21, 9, 21);// 合并单元格

   Label lab0 = new Label(0, 3, "1", setTitle(10));
   Label lab1 = new Label(1, 3, rd.getString("PLACE"), setTitle(10));
   Label lab2 = new Label(2, 3, rd.getString("NUM500"), setTitle(10));
   Label lab3 = new Label(3, 3, rd.getString("NUM220"), setTitle(10));
   Label lab4 = new Label(4, 3, rd.getString("YK_NUM"), setTitle(10));
   Label lab5 = new Label(5, 3, rd.getString("AVC_NUM"), setTitle(10));
   Label lab6 = new Label(6, 3, rd.getString("YK_SUM"), setTitle(10));
   Label lab7 = new Label(7, 3, rd.getString("YKJD_NUM"), setTitle(10));
   Label lab8 = new Label(8, 3, rd.getString("YKWD_NUM"), setTitle(10));
   Label lab9 = new Label(9, 3, rd.getString("YK_CGL"), setTitle(10));

   sheet.addCell(lab0);
   sheet.addCell(lab1);
   sheet.addCell(lab2);
   sheet.addCell(lab3);
   sheet.addCell(lab4);
   sheet.addCell(lab5);
   sheet.addCell(lab6);
   sheet.addCell(lab7);
   sheet.addCell(lab8);
   sheet.addCell(lab9);

   // 写入数据并关闭文件
   book.write();
   book.close();

  } catch (Exception ex) {
   ex.printStackTrace();
  }

  return null;
 }
public static WritableCellFormat setTitle(int fontSize)
   throws WriteException {
  // Colour color = Colour.GRAY_25;
  // 设置字体颜色
  WritableFont font = new jxl.write.WritableFont(WritableFont.ARIAL,
    fontSize, WritableFont.NO_BOLD, false,
    UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
  WritableCellFormat cellFormat = new jxl.write.WritableCellFormat(font);
  // 设置单元格背景颜色
  // cellFormat.setBackground(color);
  // cellFormat.setShrinkToFit(true);
  cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN);// 增加边框
  cellFormat.setVerticalAlignment((jxl.format.VerticalAlignment.CENTRE));// 上下居中
  cellFormat.setAlignment((jxl.format.Alignment.CENTRE));// 左右居中
  cellFormat.setWrap(true);
  return cellFormat;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值