亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

JAVA操作Excel參考

系統 2112 0

Java Excel是一開放源碼項目,通過它Java開發人員可以讀取Excel文件的內容、創建新的Excel文件、更新已經存在的Excel文件。

?

?? 今天突然翻到了以前的一個測試,好像也是從哪里拷貝修改改過的,注釋里有個IBM的鏈接 http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10,貼上來當作一個入門參考資料吧。

?

Java代碼 復制代碼
  1. import ?java.io.File; ??
  2. import ?java.io.IOException; ??
  3. ??
  4. import ?jxl.Cell; ??
  5. import ?jxl.HeaderFooter; ??
  6. import ?jxl.Sheet; ??
  7. import ?jxl.Workbook; ??
  8. import ?jxl.format.VerticalAlignment; ??
  9. import ?jxl.read.biff.BiffException; ??
  10. import ?jxl.write.Label; ??
  11. import ?jxl.write.WritableCellFormat; ??
  12. import ?jxl.write.WritableImage; ??
  13. import ?jxl.write.WritableSheet; ??
  14. import ?jxl.write.WritableWorkbook; ??
  15. import ?jxl.write.WriteException; ??
  16. import ?jxl.write.biff.RowsExceededException; ??
  17. ??
  18. /** ?
  19. ?*?@author?cjj?2008-12-22?參考: ?
  20. ?*?????????http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10 ?
  21. ?*? ?
  22. ?*? ?
  23. ?*/ ??
  24. public ? class ?ExcelUtils ??
  25. { ??
  26. ???? /** ?
  27. ?????*?讀取Excel文件的內容 ?
  28. ?????*? ?
  29. ?????*?@param?file ?
  30. ?????*????????????待讀取的文件 ?
  31. ?????*?@return ?
  32. ?????*/ ??
  33. ???? public ? static ?String?readExcel( final ?File?file) ??
  34. ????{ ??
  35. ???????? final ?StringBuffer?sb?=? new ?StringBuffer(); ??
  36. ??
  37. ????????Workbook?wb?=? null ; ??
  38. ???????? try ??
  39. ????????{ ??
  40. ???????????? //構造Workbook(工作薄)對象??? ??
  41. ????????????wb?=?Workbook.getWorkbook(file); ??
  42. ????????} ??
  43. ???????? catch ?( final ?BiffException?e) ??
  44. ????????{ ??
  45. ????????????e.printStackTrace(); ??
  46. ????????} ??
  47. ???????? catch ?( final ?IOException?e) ??
  48. ????????{ ??
  49. ????????????e.printStackTrace(); ??
  50. ????????} ??
  51. ??
  52. ???????? if ?(wb?==? null )? return ? null ; ??
  53. ??
  54. ???????? //獲得了Workbook對象之后,就可以通過它得到Sheet(工作表)對象了??? ??
  55. ???????? final ?Sheet[]?sheet?=?wb.getSheets(); ??
  56. ??
  57. ???????? if ?(sheet?!=? null ?&&?sheet.length?>? 0 ) ??
  58. ????????{ ??
  59. ???????????? //對每個工作表進行循環??? ??
  60. ???????????? for ?( int ?i?=? 0 ;?i?<?sheet.length;?i++) ??
  61. ????????????{ ??
  62. ???????????????? //得到當前工作表的行數??? ??
  63. ???????????????? final ? int ?rowNum?=?sheet[i].getRows(); ??
  64. ???????????????? for ?( int ?j?=? 0 ;?j?<?rowNum;?j++) ??
  65. ????????????????{ ??
  66. ???????????????????? //得到當前行的所有單元格??? ??
  67. ???????????????????? final ?Cell[]?cells?=?sheet[i].getRow(j); ??
  68. ???????????????????? if ?(cells?!=? null ?&&?cells.length?>? 0 ) ??
  69. ????????????????????{ ??
  70. ???????????????????????? //對每個單元格進行循環??? ??
  71. ???????????????????????? for ?( int ?k?=? 0 ;?k?<?cells.length;?k++) ??
  72. ????????????????????????{ ??
  73. ???????????????????????????? //讀取當前單元格的值??? ??
  74. ???????????????????????????? final ?String?cellValue?=?cells[k].getContents(); ??
  75. ????????????????????????????sb.append(cellValue?+? "\t" ); ??
  76. ????????????????????????} ??
  77. ????????????????????} ??
  78. ????????????????????sb.append( "\r\n" ); ??
  79. ????????????????} ??
  80. ????????????????sb.append( "\r\n" ); ??
  81. ????????????} ??
  82. ????????} ??
  83. ???????? //最后關閉資源,釋放內存??? ??
  84. ????????wb.close(); ??
  85. ???????? return ?sb.toString(); ??
  86. ????} ??
  87. ??
  88. ???? /** ?
  89. ?????*?生成一個Excel文件 ?
  90. ?????*? ?
  91. ?????*?@param?fileName ?
  92. ?????*????????????要生成的Excel文件名 ?
  93. ?????*/ ??
  94. ???? public ? static ? void ?writeExcel( final ?String?fileName) ??
  95. ????{ ??
  96. ????????WritableWorkbook?wwb?=? null ; ??
  97. ???????? //格式化 ??
  98. ???????? final ?WritableCellFormat?totalFormat?=? new ?WritableCellFormat(); ??
  99. ???????? try ??
  100. ????????{ ??
  101. ???????????? //首先要使用Workbook類的工廠方法創建一個可寫入的工作薄(Workbook)對象??? ??
  102. ????????????wwb?=?Workbook.createWorkbook( new ?File(fileName)); ??
  103. ???????????? //格式化劇中 ??
  104. ????????????totalFormat.setVerticalAlignment(VerticalAlignment.CENTRE); ??
  105. ??
  106. ????????} ??
  107. ???????? catch ?( final ?IOException?e) ??
  108. ????????{ ??
  109. ????????????e.printStackTrace(); ??
  110. ????????} ??
  111. ???????? catch ?( final ?WriteException?e) ??
  112. ????????{ ??
  113. ????????????e.printStackTrace(); ??
  114. ????????} ??
  115. ???????? if ?(wwb?!=? null ) ??
  116. ????????{ ??
  117. ???????????? //創建一個可寫入的工作表??? ??
  118. ???????????? //Workbook的createSheet方法有兩個參數,第一個是工作表的名稱,第二個是工作表在工作薄中的位置??? ??
  119. ???????????? final ?WritableSheet?ws?=?wwb.createSheet( "sheet1" ,? 0 ); ??
  120. ??
  121. ???????????? //下面開始添加單元格??? ??
  122. ???????????? for ?( int ?i?=? 0 ;?i?<? 10 ;?i++) ??
  123. ????????????{ ??
  124. ???????????????? for ?( int ?j?=? 0 ;?j?<? 5 ;?j++) ??
  125. ????????????????{ ??
  126. ???????????????????? //這里需要注意的是,在Excel中,第一個參數表示列,第二個表示行??? ??
  127. ???????????????????? final ?Label?labelC?=? new ?Label(j,?i,? "這是第" ?+?(i?+? 1 )?+? "行,第" ?+?(j?+? 1 )?+? "列" ,?totalFormat); ??
  128. ???????????????????? try ??
  129. ????????????????????{ ??
  130. ???????????????????????? //將生成的單元格添加到工作表中??? ??
  131. ????????????????????????ws.addCell(labelC); ??
  132. ????????????????????} ??
  133. ???????????????????? catch ?( final ?RowsExceededException?e) ??
  134. ????????????????????{ ??
  135. ????????????????????????e.printStackTrace(); ??
  136. ????????????????????} ??
  137. ???????????????????? catch ?( final ?WriteException?e) ??
  138. ????????????????????{ ??
  139. ????????????????????????e.printStackTrace(); ??
  140. ????????????????????} ??
  141. ??
  142. ????????????????} ??
  143. ????????????} ??
  144. ??
  145. ???????????? try ??
  146. ????????????{ ??
  147. ???????????????? //把?單元格(column,?row)到單元格(column1,?row1)進行合并。 ??
  148. ????????????????ws.mergeCells( 6 ,? 0 ,? 6 ,? 3 ); ??
  149. ???????????????? //從內存中寫入文件中??? ??
  150. ????????????????wwb.write(); ??
  151. ???????????????? //關閉資源,釋放內存??? ??
  152. ????????????????wwb.close(); ??
  153. ????????????} ??
  154. ???????????? catch ?( final ?IOException?e) ??
  155. ????????????{ ??
  156. ????????????????e.printStackTrace(); ??
  157. ????????????} ??
  158. ???????????? catch ?( final ?WriteException?e) ??
  159. ????????????{ ??
  160. ????????????????e.printStackTrace(); ??
  161. ????????????} ??
  162. ????????} ??
  163. ????} ??
  164. ??
  165. ???? /** ?
  166. ?????*?搜索某一個文件中是否包含某個關鍵字 ?
  167. ?????*? ?
  168. ?????*?@param?file ?
  169. ?????*????????????待搜索的文件 ?
  170. ?????*?@param?keyWord ?
  171. ?????*????????????要搜索的關鍵字 ?
  172. ?????*?@return ?
  173. ?????*/ ??
  174. ???? public ? static ? boolean ?searchKeyWord( final ?File?file,? final ?String?keyWord) ??
  175. ????{ ??
  176. ???????? boolean ?res?=? false ; ??
  177. ??
  178. ????????Workbook?wb?=? null ; ??
  179. ???????? try ??
  180. ????????{ ??
  181. ???????????? //構造Workbook(工作薄)對象??? ??
  182. ????????????wb?=?Workbook.getWorkbook(file); ??
  183. ????????} ??
  184. ???????? catch ?( final ?BiffException?e) ??
  185. ????????{ ??
  186. ???????????? return ?res; ??
  187. ????????} ??
  188. ???????? catch ?( final ?IOException?e) ??
  189. ????????{ ??
  190. ???????????? return ?res; ??
  191. ????????} ??
  192. ??
  193. ???????? if ?(wb?==? null )? return ?res; ??
  194. ??
  195. ???????? //獲得了Workbook對象之后,就可以通過它得到Sheet(工作表)對象了??? ??
  196. ???????? final ?Sheet[]?sheet?=?wb.getSheets(); ??
  197. ??
  198. ???????? boolean ?breakSheet?=? false ; ??
  199. ??
  200. ???????? if ?(sheet?!=? null ?&&?sheet.length?>? 0 ) ??
  201. ????????{ ??
  202. ???????????? //對每個工作表進行循環??? ??
  203. ???????????? for ?( int ?i?=? 0 ;?i?<?sheet.length;?i++) ??
  204. ????????????{ ??
  205. ???????????????? if ?(breakSheet)? break ; ??
  206. ??
  207. ???????????????? //得到當前工作表的行數??? ??
  208. ???????????????? final ? int ?rowNum?=?sheet[i].getRows(); ??
  209. ??
  210. ???????????????? boolean ?breakRow?=? false ; ??
  211. ??
  212. ???????????????? for ?( int ?j?=? 0 ;?j?<?rowNum;?j++) ??
  213. ????????????????{ ??
  214. ???????????????????? if ?(breakRow)? break ; ??
  215. ???????????????????? //得到當前行的所有單元格??? ??
  216. ???????????????????? final ?Cell[]?cells?=?sheet[i].getRow(j); ??
  217. ???????????????????? if ?(cells?!=? null ?&&?cells.length?>? 0 ) ??
  218. ????????????????????{ ??
  219. ???????????????????????? boolean ?breakCell?=? false ; ??
  220. ???????????????????????? //對每個單元格進行循環??? ??
  221. ???????????????????????? for ?( int ?k?=? 0 ;?k?<?cells.length;?k++) ??
  222. ????????????????????????{ ??
  223. ???????????????????????????? if ?(breakCell)? break ; ??
  224. ???????????????????????????? //讀取當前單元格的值??? ??
  225. ???????????????????????????? final ?String?cellValue?=?cells[k].getContents(); ??
  226. ???????????????????????????? if ?(cellValue?==? null )? continue ; ??
  227. ???????????????????????????? if ?(cellValue.contains(keyWord)) ??
  228. ????????????????????????????{ ??
  229. ????????????????????????????????res?=? true ; ??
  230. ????????????????????????????????breakCell?=? true ; ??
  231. ????????????????????????????????breakRow?=? true ; ??
  232. ????????????????????????????????breakSheet?=? true ; ??
  233. ????????????????????????????} ??
  234. ????????????????????????} ??
  235. ????????????????????} ??
  236. ????????????????} ??
  237. ????????????} ??
  238. ????????} ??
  239. ???????? //最后關閉資源,釋放內存??? ??
  240. ????????wb.close(); ??
  241. ??
  242. ???????? return ?res; ??
  243. ????} ??
  244. ??
  245. ???? /** ?
  246. ?????*?往Excel中插入圖片 ?
  247. ?????*? ?
  248. ?????*?@param?dataSheet ?
  249. ?????*????????????待插入的工作表 ?
  250. ?????*?@param?col ?
  251. ?????*????????????圖片從該列開始 ?
  252. ?????*?@param?row ?
  253. ?????*????????????圖片從該行開始 ?
  254. ?????*?@param?width ?
  255. ?????*????????????圖片所占的列數 ?
  256. ?????*?@param?height ?
  257. ?????*????????????圖片所占的行數 ?
  258. ?????*?@param?imgFile ?
  259. ?????*????????????要插入的圖片文件 ?
  260. ?????*/ ??
  261. ???? public ? static ? void ?insertImg(??? final ?WritableSheet?dataSheet, ??
  262. ???????????????????????????????????? final ? int ?col, ??
  263. ???????????????????????????????????? final ? int ?row, ??
  264. ???????????????????????????????????? final ? int ?width, ??
  265. ???????????????????????????????????? final ? int ?height, ??
  266. ???????????????????????????????????? final ?File?imgFile) ??
  267. ????{ ??
  268. ???????? final ?WritableImage?img?=? new ?WritableImage(col,?row,?width,?height,?imgFile); ??
  269. ????????dataSheet.addImage(img); ??
  270. ????} ??
  271. ??
  272. ???? /** ?
  273. ?????*?向Excel中加入頁眉頁腳 ?
  274. ?????*? ?
  275. ?????*?@param?dataSheet ?
  276. ?????*????????????待加入頁眉的工作表 ?
  277. ?????*?@param?left ?
  278. ?????*?@param?center ?
  279. ?????*?@param?right ?
  280. ?????*/ ??
  281. ???? public ? static ? void ?setHeader(??? final ?WritableSheet?dataSheet, ??
  282. ???????????????????????????????????? final ?String?left, ??
  283. ???????????????????????????????????? final ?String?center, ??
  284. ???????????????????????????????????? final ?String?right) ??
  285. ????{ ??
  286. ???????? final ?HeaderFooter?hf?=? new ?HeaderFooter(); ??
  287. ????????hf.getLeft().append(left); ??
  288. ????????hf.getCentre().append(center); ??
  289. ????????hf.getRight().append(right); ??
  290. ???????? //加入頁眉??? ??
  291. ????????dataSheet.getSettings().setHeader(hf); ??
  292. ???????? //加入頁腳??? ??
  293. ???????? //dataSheet.getSettings().setFooter(hf);??? ??
  294. ????} ??
  295. ??
  296. ???? //測試 ??
  297. ???? public ? static ? void ?main( final ?String[]?arts) ??
  298. ????{ ??
  299. ??
  300. ???????? //測試寫 ??
  301. ????????ExcelUtils.writeExcel( "test.xls" ); ??
  302. ??
  303. ???????? if ?( false ) ??
  304. ????????{ ??
  305. ???????????? //測試插入頁眉頁腳 ??
  306. ???????????? try ??
  307. ????????????{ ??
  308. ???????????????? //創建一個工作薄??? ??
  309. ???????????????? final ?WritableWorkbook?workbook?=?Workbook.createWorkbook( new ?File( "test.xls" )); ??
  310. ???????????????? //待插入的工作表??? ??
  311. ???????????????? final ?WritableSheet?dataSheet?=?workbook.createSheet( "加入頁眉" ,? 0 ); ??
  312. ????????????????ExcelUtils.setHeader(dataSheet,? "chb" ,? "2007-03-06" ,? "第1頁,共3頁" ); ??
  313. ????????????????workbook.write(); ??
  314. ????????????????workbook.close(); ??
  315. ????????????} ??
  316. ???????????? catch ?( final ?IOException?e) ??
  317. ????????????{ ??
  318. ????????????????e.printStackTrace(); ??
  319. ????????????} ??
  320. ???????????? catch ?( final ?WriteException?e) ??
  321. ????????????{ ??
  322. ????????????????e.printStackTrace(); ??
  323. ????????????} ??
  324. ????????} ??
  325. ??
  326. ???????? if ?( false ) ??
  327. ????????{ ??
  328. ???????????? //測試插入圖片 ??
  329. ???????????? try ??
  330. ????????????{ ??
  331. ???????????????? //創建一個工作薄??? ??
  332. ???????????????? final ?WritableWorkbook?workbook?=?Workbook.createWorkbook( new ?File( "D:/testxls" )); ??
  333. ???????????????? //待插入的工作表??? ??
  334. ???????????????? final ?WritableSheet?imgSheet?=?workbook.createSheet( "Images" ,? 0 ); ??
  335. ???????????????? //要插入的圖片文件??? ??
  336. ???????????????? final ?File?imgFile?=? new ?File( "D:/png" ); ??
  337. ???????????????? //圖片插入到第二行第一個單元格,長寬各占六個單元格??? ??
  338. ????????????????insertImg(imgSheet,? 0 ,? 1 ,? 6 ,? 6 ,?imgFile); ??
  339. ????????????????workbook.write(); ??
  340. ????????????????workbook.close(); ??
  341. ????????????} ??
  342. ???????????? catch ?( final ?IOException?e) ??
  343. ????????????{ ??
  344. ????????????????e.printStackTrace(); ??
  345. ????????????} ??
  346. ???????????? catch ?( final ?WriteException?e) ??
  347. ????????????{ ??
  348. ????????????????e.printStackTrace(); ??
  349. ????????????} ??
  350. ????????} ??
  351. ??
  352. ????} ??
  353. }??

JAVA操作Excel參考


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 性欧美成人依依影院 | 久久国产精品视频 | 毛片女女女女女女女女女 | bt 另类 专区 欧美 制服 | 欧美成人免费夜夜黄啪啪 | 国产真实一区二区三区 | 亚洲精品久荜中文字幕 | 人人爱天天做夜夜爽毛片 | 草草视频免费观看 | 一级毛片免费视频观看 | 久久99这里只有精品国产 | 中文国产成人精品久久96 | 欧美亚洲国产另类在线观看 | 香蕉碰碰人人a久久动漫精品 | 午夜a一级毛片一.成 | 亚洲成人精品在线 | 亚洲欧美v视色一区二区 | 国内精品久久影院 | 777kkk亚洲综合欧美色老头 | 国内久久精品视频 | 91中文字幕视频 | 欧美高清亚洲欧美一区h | 亚洲精品一区二区在线播放 | 欧美乱妇高清视频免欢看关 | 久久99国产这里有精品视 | 深夜福利免费 | 九九亚洲精品自拍 | 成年女人在线观看 | 国产精品亚洲二区在线 | 99人中文字幕亚洲区 | 在线视频一二三区2021不卡 | 日本欧美三级 | 日本精品一区 | 久久精品中文字幕极品 | 国产真实强j视频在线观看 国产真实偷乱视频在线观看 | 伊人免费网 | 四虎影院黄色 | 日本中文一二区有码在线观看 | 看毛片免费 | 免费a一级毛片在线播放 | 操一操干一干 |