jxl.jar新建读取编辑Excel.xls
2016-12-11 16:39
274 查看
今日工作需要, 用java写了点代码操作excel文件.
通过网上的资源, 有两个开源的插件可用. jxl.jar(只能操作excel.xls不支持excel.xlsx)和 poi.jar(支持excel.xls和excel.xlsx, 还支持word文件.)
这次我用的是jxl.jar. 简单的使用学起来很快. 附上api传送门http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/
jxl.jar完美体现了面向对象的思想.简单列举几个常用类和接口
Workbook--对应一个excel文件
Sheet--对应一个sheet工作簿
Cell--对应一个cell单元格, 大多数编码工作都是围绕cell进行, 因为cell单元格是excel的最小编辑单位(自认为)嘛~
不说了,下面附上代码.
----------------------下面是控制台打出的日志---------------------------
网上很多博客和栗子, 使用过程中, 先看别人的博客, 再参照API, API内容不多,很容易懂.
写博客为自己留个印记, 也为方便同行需要的时间可以搜到我的经验以作参考.
通过网上的资源, 有两个开源的插件可用. jxl.jar(只能操作excel.xls不支持excel.xlsx)和 poi.jar(支持excel.xls和excel.xlsx, 还支持word文件.)
这次我用的是jxl.jar. 简单的使用学起来很快. 附上api传送门http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/
jxl.jar完美体现了面向对象的思想.简单列举几个常用类和接口
Workbook--对应一个excel文件
Sheet--对应一个sheet工作簿
Cell--对应一个cell单元格, 大多数编码工作都是围绕cell进行, 因为cell单元格是excel的最小编辑单位(自认为)嘛~
不说了,下面附上代码.
/** * @description Jxl.jar操作excel.xls文件 * @author huangjc * @date 2016年12月11日 16:32:50 */ package util; import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.format.CellFormat; import jxl.write.Label; import jxl.write.WritableCell; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class ExcelUtilByJxl { public static void main(String[] args) throws Exception { createXl("F:/javaTraining/newXls01.xls"); readXl("F:/javaTraining/newXls01.xls"); editXl("F:/javaTraining/newXls01.xls"); } // 新建excel public static void createXl(String xlPath) { System.out.println("--------------------开始新建并写入一个newXls01.xls--------------------"); File file = new File(xlPath); WritableWorkbook workbook = null; WritableSheet sheet = null; try { workbook = Workbook.createWorkbook(file);// Creates a writable workbook with the given file name,这里会在磁盘上生成一个file文件 sheet = workbook.createSheet("sheet0", 0);// 新建第一个sheet // 第0行表头, 行规定从第0行开始 sheet.addCell(new Label(0, 0, "plyNo保单号"));// Label(列,行,内容) sheet.addCell(new Label(1, 0, "payType请款类型")); // 内容从第1行开始 for (int row = 1; row < 21; row++) { for (int col = 0; col < 2; col++) {// 每行2列, 列规则是从第0列开始 if (col == 0) sheet.addCell(new Label(col, row, "plyNo" + row));// 向sheet中添加cell单元格 if (col == 1) sheet.addCell(new Label(col, row, "payType" + row)); } } workbook.write();// Writes out the data held in this workbook in Excel format } catch (Exception e) { e.printStackTrace(); } finally { // 使用完后,记得关闭workbook if (workbook != null) { // 漏写的话, excel文件内容为空!! try { workbook.close(); } catch (WriteException | IOException e) { e.printStackTrace(); }// 关闭workbook释放内存,内容才会被写入到磁盘上的excel文件. } System.out.println("--------------------结束新建并写入一个newXls01.xls--------------------"); } } // 读excel public static void readXl(String xlPath) { System.out.println("--------------------开始读excel--------------------"); File file = new File(xlPath); Workbook workbook = null; Sheet sheet = null; Cell cell = null; try { workbook = Workbook.getWorkbook(file); sheet = workbook.getSheet(0);// 根据sheet排序取第0个sheet // sheet = workbook.getSheet("sheet0");//根据sheet名字取名为"sheet0"的sheet cell = sheet.getCell(0, 0);// 标题00 String header00 = cell.getContents();// 取标题00位置的内容 cell = sheet.getCell(1, 0);// 标题10 String header10 = cell.getContents();// 取标题00位置的内容 System.out.println("标题为:" + header00 + "----" + header10); for (int row = 1; row < 21; row++) { String content0 = null; String content1 = null; for (int col = 0; col < 2; col++) { if (col == 0) { cell = sheet.getCell(col, row); content0 = cell.getContents(); } else if (col == 1) { cell = sheet.getCell(col, row); content1 = cell.getContents(); } } System.out.println("第" + row + "行:" + content0 + "----" + content1); } } catch (Exception e) { e.printStackTrace(); } finally { workbook.close();// 关闭workbook释放内存 System.out.println("--------------------结束读excel--------------------"); } } // 写excel public static void writeXl(String xlPath) { } // 编辑excel public static void editXl(String xlPath) { System.out.println("--------------------开始编辑excel--------------------"); File file = new File(xlPath); Workbook workbook = null; WritableWorkbook wtbook = null; WritableSheet wtSheet = null; WritableCell wtCell = null; String cellStr = null; String cellConts = null; try { workbook = Workbook.getWorkbook(file); // jxl.Workbook 对象是只读的,所以如果要修改Excel,需要创建一个可写的副本,副本指向原Excel文件(即下面的new File(excelpath)) wtbook = Workbook.createWorkbook(file, workbook); wtSheet = wtbook.getSheet(0); wtCell = wtSheet.getWritableCell(0, 0); if (wtCell.getType() == CellType.LABEL) {// 文本类型 /*********Label类更新单元格cell内容*********/ cellStr = ((Label) wtCell).getString();// 获取单元格cell内容 System.out.println("单元格cell(" + wtCell.getColumn() + "," + wtCell.getRow() + ")修改前:" + cellStr); //直接指定更新cell内容 ((Label) wtCell).setString("newHeader00");// 修改单元格cell内容 cellStr = ((Label) wtCell).getString();// 获取单元格cell内容 System.out.println("单元格cell(" + wtCell.getColumn() + "," + wtCell.getRow() + ")修改后:" + cellStr); /*********Label类更新单元格cell内容*********/ /*********sheet.addCell()覆盖添加 以更新单元格cell内容*********/ cellConts = wtCell.getContents(); System.out.println("单元格cell(" + wtCell.getColumn() + "," + wtCell.getRow() + ")修改前:" + cellConts); CellFormat cf = wtCell.getCellFormat();//获取第一个单元格的格式 Label lbl = new Label(wtCell.getColumn(), wtCell.getRow(), "newHeader00");//新建一个Label,坐标与将要修改的Cell一模一样 lbl.setCellFormat(cf);//将修改后的单元格的格式设定成跟原来一样 //通过覆盖添加实现更新cell内容 wtSheet.addCell(lbl);//把Label覆盖添加到Sheet将要修改的同样坐标位置的Cell wtCell = wtSheet.getWritableCell(0, 0);//这里要重新获取一下cell对象,否则下面的cellConts = wtCell.getContents(); 还是原来的cell对象 cellConts = wtCell.getContents();// 获取单元格cell内容 System.out.println("单元格cell(" + wtCell.getColumn() + "," + wtCell.getRow() + ")修改后:" + cellConts); /*********sheet.addCell()覆盖添加 以更新单元格cell内容*********/ } } catch (Exception e) { e.printStackTrace(); } finally { try { wtbook.write(); } catch (IOException e) { e.printStackTrace(); } try { wtbook.close(); } catch (WriteException | IOException e) { e.printStackTrace(); } workbook.close(); System.out.println("--------------------结束编辑excel--------------------"); } } }
----------------------下面是控制台打出的日志---------------------------
--------------------开始新建并写入一个newXls01.xls-------------------- --------------------结束新建并写入一个newXls01.xls-------------------- --------------------开始读excel-------------------- 标题为:plyNo保单号----payType请款类型 第1行:plyNo1----payType1 第2行:plyNo2----payType2 第3行:plyNo3----payType3 第4行:plyNo4----payType4 第5行:plyNo5----payType5 第6行:plyNo6----payType6 第7行:plyNo7----payType7 第8行:plyNo8----payType8 第9行:plyNo9----payType9 第10行:plyNo10----payType10 第11行:plyNo11----payType11 第12行:plyNo12----payType12 第13行:plyNo13----payType13 第14行:plyNo14----payType14 第15行:plyNo15----payType15 第16行:plyNo16----payType16 第17行:plyNo17----payType17 第18行:plyNo18----payType18 第19行:plyNo19----payType19 第20行:plyNo20----payType20 --------------------结束读excel-------------------- --------------------开始编辑excel-------------------- 单元格cell(0,0)修改前:plyNo保单号 单元格cell(0,0)修改后:newHeader00 单元格cell(0,0)修改前:newHeader00 单元格cell(0,0)修改后:newHeader00 --------------------结束编辑excel--------------------
网上很多博客和栗子, 使用过程中, 先看别人的博客, 再参照API, API内容不多,很容易懂.
写博客为自己留个印记, 也为方便同行需要的时间可以搜到我的经验以作参考.
相关文章推荐
- java 读取excel,jxl.jar下载地址:
- jxl读取指定文件下的所有Excel文件,但是是.xls文件,查的是jxl不支持excel2007
- 通过jxl.jar 读取、导出excel的实例代码
- 用jxl.jar读取Excel文件内容
- 利用jxl.jar读取EXCEL文件
- Java利用JXL&POI读取Excel(xls和xlsx)
- 读取excel文件(jxl.jar包简介/java操作excel jxl.jar下载地址)
- JAVA读取Excel的实现(利用jxl.jar读取excel)
- 使用jxl.jar 读取excel表格数据
- Java操作Excel使用jxl.jar--读取Excel
- 通过jxl.jar 读取、导出excel的小例子
- POI读取xls、xlsx(个人认为用JXL效果更好,但是JXL并不支持07版的Excel)
- 利用jxl.jar实现excel的读取
- java 读取excel,jxl.jar下载地址:
- java利用jxl.jar创建、读取EXCEL文件
- Java读取Excel的方法,解析xls、xlsx两种格式
- Java Excel API jxl入门及jxl.jar下载(java生成excel文件)
- Java:使用jxl读取excel文件内容
- Java用jxl读取excel并保存到数据库的方法
- java与Excel (.xls文件) ---使用JXL创建,增添表格文件