使用jxl.jar操作Excel
在工程的build path中添加jxl.jar,网址:http://www.andykhan.com/jexcelapi/
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import jxl.Workbook;
- import jxl.write.Label;
- import jxl.write.WritableSheet;
- import jxl.write.WritableWorkbook;
- /**
- * 将错误码的描述信息导入到表格中
- */
- public class ErrorsToExcel {
- //错误码文件的默认编码格式
- private String defaultEncoding = "gb2312";
- private String errorsXls = "errorMessage_batch_template.xls";
- private String errorsSrcFile = "error-messages.properties";
- //写入错误码的列
- private int errorCodeIndex = 1;
- //要写入错误描述的表格的列
- private int[] errorDescIndexs = {5,6};
- /**
- * 将错误码的相关数据写入到给定的Excel中
- */
- public boolean appendErrorsToXls(){
- boolean flag = true;
- Workbook book = null;
- WritableWorkbook writableWorkbook = null;
- try{
- File excelFile = new File(errorsXls);
- if(!excelFile.exists()){
- System.out.println("要导入的Excel模板不存在");
- return false;
- }
- //获取可写入的Excel对象
- book = Workbook.getWorkbook(excelFile);
- writableWorkbook = Workbook.createWorkbook(excelFile, book);
- //获取可写入的表格对象
- WritableSheet targetSheet = writableWorkbook.getSheet(0);
- //添加数据
- if(!appendDataToSheet(targetSheet))
- flag = false;
- //将表格中的数据写入Excel中
- writableWorkbook.write();
- }catch(Exception e){
- System.out.println("将错误码放到Excel时出错");
- flag = false;
- }finally{
- if(book!=null){
- book.close();
- }
- if(writableWorkbook!=null){
- try {
- writableWorkbook.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- return flag;
- }
- /**
- * 将数据写入到表格Sheet中
- *
- * @param targetSheet 要写入数据的表格
- * @return true表示写入成功 false表示失败
- * @throws IOException
- */
- private boolean appendDataToSheet(WritableSheet targetSheet) throws IOException{
- boolean flag = true;
- File file = null;
- file = new File(errorsSrcFile);
- if(!file.exists()){
- System.out.println("错误码源文件不存在");
- return false;
- }
- //进行编码格式的转换
- InputStreamReader streamReader = new InputStreamReader(new FileInputStream(file), defaultEncoding);
- BufferedReader reader = new BufferedReader(streamReader);
- String nextLine = "";
- int row = 1;
- //处理格式
- while((nextLine=reader.readLine())!=null){
- String[] codeDescs = nextLine.split("=");
- if(codeDescs.length<=1){ //非错误码内容行
- continue;
- }
- try{
- //插入错误码单元格
- Label codeLabel = generateLabel(errorCodeIndex-1, row, codeDescs[0]);
- targetSheet.addCell(codeLabel);
- //插入描述信息单元格
- for(int j=0; j<errorDescIndexs.length; ++j ){
- Label descLabel = generateLabel(errorDescIndexs[j]-1, row, codeDescs[1]);
- targetSheet.addCell(descLabel);
- }
- }catch(Exception e){
- System.out.println("插入单元格信息出错");
- }
- row++;
- }
- return flag;
- }
- private Label generateLabel(int col, int row, String contents){
- //Label的构造函数中是列序号在前,行序号在后
- return new Label(col, row, contents);
- }
- public String getErrorsXls() {
- return errorsXls;
- }
- public void setErrorsXls(String errorsXls) {
- this.errorsXls = errorsXls;
- }
- public String getErrorsSrcFile() {
- return errorsSrcFile;
- }
- public void setErrorsSrcFile(String errorsSrcFile) {
- this.errorsSrcFile = errorsSrcFile;
- }
- public static void main(String[] args){
- ErrorsToExcel transformer = new ErrorsToExcel();
- if(transformer.appendErrorsToXls()){
- System.out.println("导入Excel成功");
- }else{
- System.out.println("导入Excel失败");
- }
- }
- }
遇到的奇葩问题:
在Java工程中使用jxl时,一切正常。但是,日后将相应文件迁移到Spring MVC环境中使用时(且将jxl.jar加到了工程的build path中),但是加载工程时,每次调用到使用jxl的类时,都会报错jxl/write/writableCell类不存在;
解决方式:将jxl.jar放到WEB-INF/lib下解决;
使用jxl.jar操作Excel的更多相关文章
- poi-3.11-beta2-20140822.jar操作excel方法
poi-3.11-beta2-20140822.jar操作excel方法 根据不同类型读取值的方法: // 获取单元格内不同类型的值 public String getValueByType(HSSF ...
- 使用JXL组件操作Excel和导出文件
这段时间参与的项目要求做几张Excel报表,由于项目框架使用了jxl组件,所以把jxl组件的详细用法归纳总结一下.本文主要讲述了以下内容: JXL及相关工具简介 如何安装JXL JXL的基本操作 创建 ...
- java 使用jxl poi 操作excel
java操作excel 创建.修改 xls 文件 JAVA操作Excel文件 Java生成和操作Excel文件 java导出Excel通用方法 Java 实现导出excel表 POI Java PO ...
- Java使用jxl.jar包写Excel文件的最适合列宽问题基本实现
以前用jxl.jar包,读写过Excel文件.也没有注意最适合列宽的问题,但是jxl.jar没有提供最适合列宽的功能,上次用到写了一下,可以基本实现最适合列宽. 注意,这个只是基本可以实现,基本针对中 ...
- POI操作Excel
POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...
- java使用POI操作excel文件,实现批量导出,和导入
一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...
- JAVA的POI操作Excel
1.1Excel简介 一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组 ...
- POI操作Excel的API注意点总结
本篇是关于POI.jar操作Excel的API注意事项 基数问题 说明:我使用的是POI 3.15版本的,在版本问题上建议大家,在版本稳定的基础上尽量使用高版本的 看过很多帖子在问一个问题:假设原来有 ...
- JXL.jar简单封装Excel读写操作
1.分析 一个excel文件能够有多页,每页excel中能够有多行,每行中能够有多列.用面向对象的思想能够把一行中的某列看作是一个String对象,一行看作是一个包括多个列的对象.一页是包括多行的对面 ...
随机推荐
- 安装tensorflow
官网:http://tensorflow.org/安装步骤:1.sudo apt-get install python-pip python-dev python-virtualenv 3 co ...
- 谓词(NSPredicate)
OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤 ...
- 动态添加组件(XML)
1.利用LayoutInflater的inflate动态加载XMLmLinearLayout = (LinearLayout)findViewById(R.id.LinearLayout_ID);La ...
- js 一个关于图片onload加载的事
前几天一个项目让我头疼了很久,一个关于图片加载时的loading效果,因为不是太懂js,所以在网上各种找资料,但还是不理想,无赖苦心研究,终于有了一点眉目了,虽然个中还有一些道理不懂,至少目的达到了; ...
- 对bigDecimal的一些探索
一般直接用简单的double等来做浮点计算可能会因为计算机的浮点运算机制出现一点问题,不符合生活中的计算常识,于是java就给我们包装了大数据类,bigdecimal用于处理浮点数据类.当然也有处理整 ...
- sharedPreference的奇怪bug
一定要清楚sp的结构,而且要知道是什么类型的.类型不对,会引起很多不知道的bug,比如本来是int类型的值,如果用String的类型去匹配,会让Activity开Activity Thread,不断地 ...
- box-shadow 与 filter:drop-shadow 详解及奇技淫巧
box-shadow 在前端的 CSS 编写工作想必十分常见.但是 box-shadow 除去它的常规用法,其实还存在许多不为人知的奇技淫巧. 喜欢 markdown 版本的可以戳这里. box-sh ...
- springmvc中url-pattern的大坑
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springfr ...
- ASP.NET页面生命周期总结(1)
图解:1) 浏览器 :把用户的操作封装成一个请求通过socket发送到后台服务器. 后台服务器:首先有个内核模块Http.sys 和针对每个应用程序池都有一个请求队列.然后请求到达http.sys ...
- 近期专案PM相关收获
1, 厚黑学讲的有道理, 坏人? 为什么占便宜., 好人为什么当不了坏人是有一定道理的. -- 作为PM,能力大小居然都能胜任,从这一点上对组员不负责,如下种种都算有则改之无则加勉. ...