java源代码写到文件_Java学习-018-EXCEL 文件写入实例源代码

本文介绍了一个用于向EXCEL文件中写入数据的Java工具方法。该方法能够处理.xls和.xlsx两种格式,并具备基本的数据验证功能。文章详细展示了如何通过此方法创建Excel工作簿、工作表,并填充数据。

1 /**

2 * @function 文件写入: EXCEL文件3 *4 *@authorAaron.ffp5 *@versionV1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java excelWrite, 2014-11-25 16:03:35 Exp $6 *7 *@paramfilename : EXCEL文件名称8 *@paramsheetname : EXCEL文件sheet名字9 *@paramexcelData : EXCEL文件内容, 二维数组10 *11 *@returnboolean12 */

13 public boolean excelWrite(String filename, String sheetname, ArrayListexcelData){14 FileOutputStream fos; //文件输出流

15 WritableWorkbook excel; //Excel 工作薄

16 WritableSheet sheet; //Excel 工作表

17 Label label; //Excel 工作表单元格 Lable(col, row, content)

18 String[] colname; //Excel 工作表列头

19 String[] rowdata; //Excel 工作表行数据20 //long start;21 //long mid;22 //long end;

23 boolean success = false;24

25 //start = System.currentTimeMillis();

26

27 /*参数校验: 为null或空字符串时, 抛出参数非法异常*/

28 if (filename == null || "".equals(filename) || !assertFileType(filename, "EXCEL")) {29 throw newIllegalArgumentException();30 }31

32 /*若工作表名称为null或空, 则默认工作表名与工作薄名相同*/

33 if (sheetname == null || "".equals(sheetname)) {34 sheetname =filename;35 }36

37 /*Excel 最大行列校验: xls 最大行列:65536, 256; XLSX 最大行列:1048576, 16384*/

38 if (filename.endsWith(".xls") && ((excelData.size() > 65536) || (excelData.get(0).length > 256))) {39 this.message = "数据超过 " + filename + " 文件的最大行列【65536, 256】, 数据行列为【" + excelData.size() + ", " + excelData.get(0).length + "】";40 this.logger.warn(this.message);41

42 returnsuccess;43 } else if (filename.endsWith(".xlsx") && ((excelData.size() > 1048576) || (excelData.get(0).length > 16384))) {44 this.message = "数据超过 " + filename + " 文件的最大行列【1048576, 16384】, 数据行列为【" + excelData.size() + ", " + excelData.get(0).length + "】";45 this.logger.warn(this.message);46

47 returnsuccess;48 }49

50 try{51 fos = new FileOutputStream(filename); //创建文件输出流

52 excel = Workbook.createWorkbook(fos); //创建 Excel 工作薄

53 sheet = excel.createSheet(sheetname, 0); //创建 Excel 工作表

54

55 /*若数据为空, 则仅创建 Excel 文件*/

56 if (excelData.isEmpty() || excelData.size() == 0) {57 excel.write();58 excel.close();59 fos.close();60

61 success = true;62 returnsuccess;63 }64

65 /*数据不为空, 则将数据第一行默认视作列头*/

66 colname = excelData.get(0);67

68 /*写入工作表列头*/

69 for (int i = 0; i < colname.length; i++) {70 label = new Label(i, 0, colname[i], this.excelSetCellCssForColname());71 sheet.addCell(label);72 }73

74 /*遍历数组, 写入数据*/

75 for (int i = 1; i < excelData.size(); i++) { //行处理

76 rowdata =excelData.get(i);77

78 for (int j = 0; j < colname.length; j++) {//列处理

79 label = new Label(j, i, rowdata[j], this.excelSetCellCss());80 sheet.addCell(label);81 }82 }83

84 //mid = System.currentTimeMillis();

85

86 excel.write();87 excel.close();88 fos.close();89

90 //end = System.currentTimeMillis();91

92 //System.out.println("Excel {" + filename + "} 数据解析共耗时 " + (mid - start) + " s");93 //System.out.println("Excel {" + filename + "} 数据写入共耗时 " + (end - mid) + " s");94 //System.out.println("Excel {" + filename + "} 数据写入共耗时 " + (end - start) + " s");

95

96 success = true;97 } catch(FileNotFoundException fnfe) {98 this.message = "文件 {" + filename + "} 不存在!";99 this.logger.error(this.message, fnfe);100 } catch(RowsExceededException ree) {101 this.message = "文件 {" + filename + "} 写入失败!";102 this.logger.error(this.message, ree);103 } catch(WriteException we) {104 this.message = "文件 {" + filename + "} 写入失败!";105 this.logger.error(this.message, we);106 } catch(IOException ioe) {107 this.message = "文件 {" + filename + "} 写入失败!";108 this.logger.error(this.message, ioe);109 }110

111 returnsuccess;112 }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值