JXL转置Excle三角矩阵项目使用总结

给同学做的一个小工具,可以把Excle中的一个三角形进行倒置,填充成对称的矩形.并把这个excle文件回传给客户端

难点:

1.EXCLE文件上传,并回传

2.JXL读取Excle文件并修改

3.三角矩阵装置

 

解决:

1.上传使用Struts上传组件

       1.在JSP文件中,输入的From为:

<form action="XSLAction.do" enctype="multipart/form-data" method="post">

       2.在ActionForm中使用FormFile来保存excle文件;

2.JXL读取Excle文件并修改

 

//从From中读取数据形成一个excle实例

      XSLForm xf = (XSLForm) form;

      FormFile file = xf.getXsl();

      Workbook bookin = Workbook.getWorkbook(file.getInputStream());

//通过这个实例构成另一个可以修改的excle实例,输出对象为response

      WritableWorkbook bookout = Workbook.createWorkbook(response
     .getOutputStream(), bookin);

 

3.把文件回传给用户

   //写入excle实例

   bookout.write();  

   //设置ContentType和Header
   response.setContentType("application/x-msdownload");
   response.setHeader("content-disposition","attachment;filename=report.xls");

   //关闭流
   bookout.close();

   //把数据写入客户端
   response.getOutputStream().flush();

 

4.转置矩阵

   通过两个for循环转置:

   for (int i = 0; i < length; i++) {
    for (int k = i; k < length; k++) {
     // 取得单元格
     Cell cell = ws.getCell(column + i, row + k);
     // 判断单元格格式
     if (cell.getType() == CellType.NUMBER) {
      NumberCell nc = (NumberCell) cell;
      //System.out.println(nc.getValue());
      // 生成单元格
      jxl.write.Number number = new jxl.write.Number(column
        + k, row + i, nc.getValue());
      ws.addCell(number);
     }
    }
   }

5.jxl读取excle文件

// 获得工作表
   WritableSheet ws = bookout.getSheet(sheetname);
// 取得单元格
     Cell cell = ws.getCell(column + i, row + k);

// 判断单元格格式是否为数字

(cell.getType() == CellType.NUMBER)

//读取数字单元格,并且生成数字单元格

NumberCell nc = (NumberCell) cell;

jxl.write.Number number = new jxl.write.Number(column
        + k, row + i, nc.getValue());
      ws.addCell(number);

//加入到sheet中去

ws.addCell(number);

 

一些参考资料:

 文件对象 2工作簿对象 3 单元格对象。
相应的在JXL中就有Workbook,Sheet ,Cell 。通过这三个对象我们就可以实现Excel文件的读取工作。
我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历
1选取Excel文件,2选择工作簿,3选择Cell,4读取信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值