20150714 Created By BaoXinjian
一、摘要
JAVA EXCEL API是一个操作excel的组件包,可以满足对一般的excel操作的需要
JAVA EXCEL API是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。
使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为它是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。
1. Excel文件中的对象和JXL组件中的对象的对应关系
(1). Excel文件包括的对象:Excel文件 工作簿 单元格
(2). Jxl组件包包括的对象:Workbook Sheet Cell
2. Excel文件中的对象和jxl组件中的对象的对应关系
(1). Excel文件 ------- workbook
(2). 工作簿 ------- sheet
(3). 单元格 ------- cell
3. 下载方式
官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6_12.tar.gz,解压后将里面的jxl.jar复制到WEB-INF/lib目录下面即可)
Java Excel API的jar包可以通过以下URL获得:
http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.6/jexcelapi_2_6_6.zip/download
(包括所有版本):http://sourceforge.net/projects/jexcelapi/files/
二、处理Excel文件中的数据的过程
选取Excel文件A选择工作簿B选择单元格C读取信息A释放资源。调用jxl的方法操作excel文件过程如下:
Step1. 通过Workbook的静态方法getWorkbook选取Excel文件
Workbook workbook = Workbook.getWorkbook(new File(execlPath));
Step2. 通过Workbook的getSheet方法选择第一个工作簿(从0开始)
Sheet sheet = workbook.getSheet(0);
Step3. 通过Sheet方法的getCell方法选择单元格
Cell cell = sheet.getCell(2,1); //获取位置为C2单元格
Step4. 通过Cell的getContents方法把单元格中的信息以字符的形式读取出来
String stringc2 = cell.getContents();
Step5. 操作完成,释放资源.
workbook.close();
三、简单写Excel的过程
1. 写Excel的简单代码
import java.io.IOException; import java.io.OutputStream; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class SimpleExcelWrite { public void createExcel(OutputStream os) throws WriteException,IOException{ //创建工作薄 WritableWorkbook workbook = Workbook.createWorkbook(os); //创建新的一页 WritableSheet sheet = workbook.createSheet("First Sheet",0); //创建要显示的内容,创建一个单元格,第一个参数为列坐标,第二个参数为行坐标,第三个参数为内容 Label xuexiao = new Label(0,0,"学校"); sheet.addCell(xuexiao); Label zhuanye = new Label(1,0,"专业"); sheet.addCell(zhuanye); Label jingzhengli = new Label(2,0,"专业竞争力"); sheet.addCell(jingzhengli); Label qinghua = new Label(0,1,"清华大学"); sheet.addCell(qinghua); Label jisuanji = new Label(1,1,"计算机专业"); sheet.addCell(jisuanji); Label gao = new Label(2,1,"高"); sheet.addCell(gao); Label beida = new Label(0,2,"北京大学"); sheet.addCell(beida); Label falv = new Label(1,2,"法律专业"); sheet.addCell(falv); Label zhong = new Label(2,2,"中"); sheet.addCell(zhong); Label ligong = new Label(0,3,"北京理工大学"); sheet.addCell(ligong); Label hangkong = new Label(1,3,"航空专业"); sheet.addCell(hangkong); Label di = new Label(2,3,"低"); sheet.addCell(di); //把创建的内容写入到输出流中,并关闭输出流 workbook.write(); workbook.close(); os.close(); } }
四、简单读Excel的过程
1. 读Excel的简单代码
3.import java.io.File; 4. 5.import java.io.FileInputStream; 6. 7.import java.io.InputStream; 8. 9. 10. 11.import jxl.Cell; 12. 13.import jxl.CellType; 14. 15.import jxl.Sheet; 16. 17.import jxl.Workbook; 18. 19.import jxl.write.Label; 20. 21. 22. 23.public class ExcelOperater 24. 25.{ 26. 27. public static void main(String[] args) 28. 29. { 30. 31. jxl.Workbook readwb = null; 32. 33. try 34. 35. { 36. 37. //构建Workbook对象, 只读Workbook对象 38. 39. //直接从本地文件创建Workbook 40. 41. InputStream instream = new FileInputStream("F:/红楼人物.xls"); 42. 43. readwb = Workbook.getWorkbook(instream); 44. 45. 46. 47. //Sheet的下标是从0开始 48. 49. //获取第一张Sheet表 50. 51. Sheet readsheet = readwb.getSheet(0); 52. 53. //获取Sheet表中所包含的总列数 54. 55. int rsColumns = readsheet.getColumns(); 56. 57. //获取Sheet表中所包含的总行数 58. 59. int rsRows = readsheet.getRows(); 60. 61. //获取指定单元格的对象引用 62. 63. for (int i = 0; i < rsRows; i++) 64. 65. { 66. 67. for (int j = 0; j < rsColumns; j++) 68. 69. { 70. 71. Cell cell = readsheet.getCell(j, i); 72. 73. System.out.print(cell.getContents() + " "); 74. 75. } 76. 77. System.out.println(); 78. 79. } 80. 81. 82. 83. //利用已经创建的Excel工作薄,创建新的可写入的Excel工作薄 84. 85. jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File( 86. 87. "F:/红楼人物1.xls"), readwb); 88. 89. //读取第一张工作表 90. 91. jxl.write.WritableSheet ws = wwb.getSheet(0); 92. 93. //获得第一个单元格对象 94. 95. jxl.write.WritableCell wc = ws.getWritableCell(0, 0); 96. 97. //判断单元格的类型, 做出相应的转化 98. 99. if (wc.getType() == CellType.LABEL) 100. 101. { 102. 103. Label l = (Label) wc; 104. 105. l.setString("新姓名"); 106. 107. } 108. 109. //写入Excel对象 110. 111. wwb.write(); 112. 113. wwb.close(); 114. 115. } catch (Exception e) { 116. 117. e.printStackTrace(); 118. 119. } finally { 120. 121. readwb.close(); 122. 123. } 124. 125.} 126. 127.}
http://www.andykhan.com/jexcelapi/download.html
Thanks and Regards