使用jxl.jar操作Excel

在工程的build path中添加jxl.jar,网址:http://www.andykhan.com/jexcelapi/

  1 import java.io.BufferedReader;
  2 import java.io.File;
  3 import java.io.FileInputStream;
  4 import java.io.IOException;
  5 import java.io.InputStreamReader;
  6 import jxl.Workbook;
  7 import jxl.write.Label;
  8 import jxl.write.WritableSheet;
  9 import jxl.write.WritableWorkbook;
 10 
 11 /**
 12  * 将错误码的描述信息导入到表格中
 13  */
 14 public class ErrorsToExcel {
 15     //错误码文件的默认编码格式
 16     private String defaultEncoding = "gb2312";
 17     
 18     private String errorsXls = "errorMessage_batch_template.xls";
 19     private String errorsSrcFile = "error-messages.properties";
 20     
 21     //写入错误码的列
 22     private int errorCodeIndex = 1;
 23     //要写入错误描述的表格的列
 24     private int[] errorDescIndexs = {5,6};
 25     
 26     /**
 27      * 将错误码的相关数据写入到给定的Excel中
 28      */
 29     public boolean appendErrorsToXls(){
 30         boolean flag = true;
 31         
 32         Workbook book = null;
 33         WritableWorkbook writableWorkbook = null;
 34         
 35         try{
 36             File excelFile = new File(errorsXls);
 37             if(!excelFile.exists()){
 38                 System.out.println("要导入的Excel模板不存在");
 39                 return false;
 40             }
 41             
 42             //获取可写入的Excel对象
 43             book = Workbook.getWorkbook(excelFile);
 44             writableWorkbook = Workbook.createWorkbook(excelFile, book);
 45             
 46             //获取可写入的表格对象
 47             WritableSheet targetSheet = writableWorkbook.getSheet(0);
 48             
 49             //添加数据
 50             if(!appendDataToSheet(targetSheet))
 51                 flag = false;
 52             
 53             //将表格中的数据写入Excel中
 54             writableWorkbook.write();
 55             
 56         }catch(Exception e){
 57             System.out.println("将错误码放到Excel时出错");
 58             flag = false;
 59         }finally{
 60             if(book!=null){
 61                 book.close();
 62             }
 63             if(writableWorkbook!=null){
 64                 try {
 65                     writableWorkbook.close();
 66                 } catch (Exception e) {
 67                     e.printStackTrace();
 68                 }
 69             }
 70         }
 71         
 72         return flag;
 73     }
 74     
 75     /**
 76      * 将数据写入到表格Sheet中
 77      * 
 78      * @param targetSheet 要写入数据的表格
 79      * @return true表示写入成功  false表示失败
 80      * @throws IOException
 81      */
 82     private boolean appendDataToSheet(WritableSheet targetSheet) throws IOException{
 83         boolean flag = true;
 84         File file = null;
 85         
 86         file = new File(errorsSrcFile);
 87         
 88         if(!file.exists()){
 89             System.out.println("错误码源文件不存在");
 90             return false;
 91         }
 92         
 93         //进行编码格式的转换
 94         InputStreamReader streamReader = new InputStreamReader(new FileInputStream(file), defaultEncoding);
 95         BufferedReader reader = new BufferedReader(streamReader);
 96         String nextLine = "";
 97         
 98         int row = 1;
 99         
100         //处理格式
101         while((nextLine=reader.readLine())!=null){
102             String[] codeDescs = nextLine.split("=");
103             if(codeDescs.length<=1){    //非错误码内容行
104                 continue;
105             }
106             
107             try{
108                 //插入错误码单元格
109                 Label codeLabel = generateLabel(errorCodeIndex-1, row, codeDescs[0]);
110                 targetSheet.addCell(codeLabel);
111                 
112                 //插入描述信息单元格
113                 for(int j=0; j<errorDescIndexs.length; ++j ){
114                     Label descLabel = generateLabel(errorDescIndexs[j]-1, row, codeDescs[1]);
115                     targetSheet.addCell(descLabel);
116                 }
117             }catch(Exception e){
118                 System.out.println("插入单元格信息出错");
119             }
120             
121             row++;
122         }
123         
124         return flag;
125     }
126     
127     private Label generateLabel(int col, int row, String contents){
128         //Label的构造函数中是列序号在前,行序号在后
129         return new Label(col, row, contents);
130     }
131 
132     public String getErrorsXls() {
133         return errorsXls;
134     }
135     public void setErrorsXls(String errorsXls) {
136         this.errorsXls = errorsXls;
137     }
138     public String getErrorsSrcFile() {
139         return errorsSrcFile;
140     }
141     public void setErrorsSrcFile(String errorsSrcFile) {
142         this.errorsSrcFile = errorsSrcFile;
143     }
144     
145     public static void main(String[] args){
146         ErrorsToExcel transformer = new ErrorsToExcel();
147         
148         if(transformer.appendErrorsToXls()){
149             System.out.println("导入Excel成功");
150         }else{
151             System.out.println("导入Excel失败");
152         }
153     }
154 }

 

遇到的奇葩问题

在Java工程中使用jxl时,一切正常。但是,日后将相应文件迁移到Spring MVC环境中使用时(且将jxl.jar加到了工程的build path中),但是加载工程时,每次调用到使用jxl的类时,都会报错jxl/write/writableCell类不存在;

解决方式:将jxl.jar放到WEB-INF/lib下解决;

转载于:https://www.cnblogs.com/-crazysnail/p/3923099.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值