Java操作Excel(读、写、搜索关键字、插入图片)

 
  1. packagechb.util;
  2. importjava.io.File;
  3. importjava.io.IOException;
  4. importjxl.Cell;
  5. importjxl.Sheet;
  6. importjxl.Workbook;
  7. importjxl.read.biff.BiffException;
  8. importjxl.write.Label;
  9. importjxl.write.WritableImage;
  10. importjxl.write.WritableSheet;
  11. importjxl.write.WritableWorkbook;
  12. importjxl.write.WriteException;
  13. importjxl.write.biff.RowsExceededException;
  14. publicclassExcelUtils{
  15. /**读取Excel文件的内容
  16. *@paramfile待读取的文件
  17. *@return
  18. */
  19. publicstaticStringreadExcel(Filefile){
  20. StringBuffersb=newStringBuffer();
  21. Workbookwb=null;
  22. try{
  23. //构造Workbook(工作薄)对象
  24. wb=Workbook.getWorkbook(file);
  25. }catch(BiffExceptione){
  26. e.printStackTrace();
  27. }catch(IOExceptione){
  28. e.printStackTrace();
  29. }
  30. if(wb==null)
  31. returnnull;
  32. //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
  33. Sheet[]sheet=wb.getSheets();
  34. if(sheet!=null&&sheet.length>0){
  35. //对每个工作表进行循环
  36. for(inti=0;i<sheet.length;i++){
  37. //得到当前工作表的行数
  38. introwNum=sheet[i].getRows();
  39. for(intj=0;j<rowNum;j++){
  40. //得到当前行的所有单元格
  41. Cell[]cells=sheet[i].getRow(j);
  42. if(cells!=null&&cells.length>0){
  43. //对每个单元格进行循环
  44. for(intk=0;k<cells.length;k++){
  45. //读取当前单元格的值
  46. StringcellValue=cells[k].getContents();
  47. sb.append(cellValue+"\t");
  48. }
  49. }
  50. sb.append("\r\n");
  51. }
  52. sb.append("\r\n");
  53. }
  54. }
  55. //最后关闭资源,释放内存
  56. wb.close();
  57. System.out.println("313");
  58. returnsb.toString();
  59. }
  60. /**生成一个Excel文件
  61. *@paramfileName要生成的Excel文件名
  62. */
  63. publicstaticvoidwriteExcel(StringfileName){
  64. WritableWorkbookwwb=null;
  65. try{
  66. //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
  67. wwb=Workbook.createWorkbook(newFile(fileName));
  68. }catch(IOExceptione){
  69. e.printStackTrace();
  70. }
  71. if(wwb!=null){
  72. //创建一个可写入的工作表
  73. //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
  74. WritableSheetws=wwb.createSheet("sheet1",0);
  75. //下面开始添加单元格
  76. for(inti=0;i<10;i++){
  77. for(intj=0;j<5;j++){
  78. //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
  79. LabellabelC=newLabel(j,i,"这是第"+(i+1)+"行,第"+(j+1)+"列");
  80. try{
  81. //将生成的单元格添加到工作表中
  82. ws.addCell(labelC);
  83. }catch(RowsExceededExceptione){
  84. e.printStackTrace();
  85. }catch(WriteExceptione){
  86. e.printStackTrace();
  87. }
  88. }
  89. }
  90. try{
  91. //从内存中写入文件中
  92. wwb.write();
  93. //关闭资源,释放内存
  94. wwb.close();
  95. }catch(IOExceptione){
  96. e.printStackTrace();
  97. }catch(WriteExceptione){
  98. e.printStackTrace();
  99. }
  100. }
  101. }
  102. /**搜索某一个文件中是否包含某个关键字
  103. *@paramfile待搜索的文件
  104. *@paramkeyWord要搜索的关键字
  105. *@return
  106. */
  107. publicstaticbooleansearchKeyWord(Filefile,StringkeyWord){
  108. booleanres=false;
  109. Workbookwb=null;
  110. try{
  111. //构造Workbook(工作薄)对象
  112. wb=Workbook.getWorkbook(file);
  113. }catch(BiffExceptione){
  114. returnres;
  115. }catch(IOExceptione){
  116. returnres;
  117. }
  118. if(wb==null)
  119. returnres;
  120. //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
  121. Sheet[]sheet=wb.getSheets();
  122. booleanbreakSheet=false;
  123. if(sheet!=null&&sheet.length>0){
  124. //对每个工作表进行循环
  125. for(inti=0;i<sheet.length;i++){
  126. if(breakSheet)
  127. break;
  128. //得到当前工作表的行数
  129. introwNum=sheet[i].getRows();
  130. booleanbreakRow=false;
  131. for(intj=0;j<rowNum;j++){
  132. if(breakRow)
  133. break;
  134. //得到当前行的所有单元格
  135. Cell[]cells=sheet[i].getRow(j);
  136. if(cells!=null&&cells.length>0){
  137. booleanbreakCell=false;
  138. //对每个单元格进行循环
  139. for(intk=0;k<cells.length;k++){
  140. if(breakCell)
  141. break;
  142. //读取当前单元格的值
  143. StringcellValue=cells[k].getContents();
  144. if(cellValue==null)
  145. continue;
  146. if(cellValue.contains(keyWord)){
  147. res=true;
  148. breakCell=true;
  149. breakRow=true;
  150. breakSheet=true;
  151. }
  152. }
  153. }
  154. }
  155. }
  156. }
  157. //最后关闭资源,释放内存
  158. wb.close();
  159. System.out.print(res);
  160. returnres;
  161. }
  162. /**往Excel中插入图片
  163. *@paramdataSheet待插入的工作表
  164. *@paramcol图片从该列开始
  165. *@paramrow图片从该行开始
  166. *@paramwidth图片所占的列数
  167. *@paramheight图片所占的行数
  168. *@paramimgFile要插入的图片文件
  169. */
  170. publicstaticvoidinsertImg(WritableSheetdataSheet,intcol,introw,intwidth,
  171. intheight,FileimgFile){
  172. WritableImageimg=newWritableImage(col,row,width,height,imgFile);
  173. dataSheet.addImage(img);
  174. }
  175. publicstaticvoidmain(String[]args){
  176. try{
  177. //创建一个工作薄
  178. WritableWorkbookworkbook=Workbook.createWorkbook(newFile("D:/test1.xls"));
  179. //待插入的工作表
  180. WritableSheetimgSheet=workbook.createSheet("Images",0);
  181. //要插入的图片文件
  182. FileimgFile=newFile("D:/1.png");
  183. //图片插入到第二行第一个单元格,长宽各占六个单元格
  184. insertImg(imgSheet,1,2,4,6,imgFile);//从第2列第3行开始,右占4列,下占6行
  185. workbook.write();
  186. workbook.close();
  187. Fileexcel=newFile("c:\\test.XLS");//Stringindexoutofrange:118
  188. System.out.println(readExcel(excel));
  189. System.out.println(searchKeyWord(excel,"1"));
  190. writeExcel("c:\\test.XLS");
  191. }catch(IOExceptione){
  192. e.printStackTrace();
  193. }catch(WriteExceptione){
  194. e.printStackTrace();
  195. }
  196. }
  197. }

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/833422

你可能感兴趣的:(Excel)