Java中导入、导出Excel( 三 )


public List loadScoreInfo(String xlsPath) throws IOException{List temp = new ArrayList();FileInputStream fileIn = new FileInputStream(xlsPath);//根据指定的文件输入流导入Excel从而产生Workbook对象Workbook wb0 = new HSSFWorkbook(fileIn);//获取Excel文档中的第一个表单Sheet sht0 = wb0.getSheetAt(0);//对Sheet中的每一行进行迭代for (Row r : sht0) {//如果当前行的行号(从0开始)未达到2(第三行)则从新循环If(r.getRowNum()<1){continue;}//创建实体类ScoreInfo info=new ScoreInfo();//取出当前行第1个单元格数据,并封装在info实体stuName属性上info.setStuName(r.getCell(0).getStringCellValue());info.setClassName(r.getCell(1).getStringCellValue());info.setRscore(r.getCell(2).getNumericCellValue());info.setLscore(r.getCell(3).getNumericCellValue());temp.add(info);}fileIn.close();return temp;}
三、使用java Excel操作Excel文件
是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件 。jxl 由于其小巧 易用的特点, 逐渐已经取代了 POI-excel的地位, 成为了越来越多的java开发人员生成excel文件的首选 。Java Excel的特征:
● 支持Excel 95-2000的所有版本
● 生成Excel 2000标准格式
● 支持字体、数字、日期格式化操作
● 支持对单元格加阴影和加色彩;

Java中导入、导出Excel

文章插图
● 修改存在的工作表;
● 支持图像和图表
● 日志记录可以定制
● 更小更快更省内存
应该说以上功能已经能够大致满足我们的需要 。最关键的是这套API是纯Java的,并不依赖系统,即使运行在Linux下,它同样能够正确的处理Excel文件 。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式 。在线帮助文档
在这里我们将通过一些实例,学习掌握读取、新建、更新,其中也包括常见格式的设置:字体、颜色、背景、合并单元格等操作,有这些其实已经基本足够应付大部分问题了 。
3.1环境配置3.1.1下载
下载地址
3.1.2 加入jar包
将jxl.jar拷贝到项目的Lib下
3.2 使用Java Excel Api 导出 Excel文件
下面我们在看如何使用Java Excel实现导出Excel表格?
代码如下:(实际开发中应封装到业务层组件中,然后在控制层中调用 。这里直接写在控制层组件,如的doGet/方法或框架的方法中)
//获得输出流,该输出流的输出介质是客户端浏览器OutputStream output=response.getOutputStream();response.reset();response.setHeader("Content-disposition","attachment;filename=temp.xls");response.setContentType("application/msexcel");//创建可写入的Excel工作薄,且内容将写入到输出流,并通过输出流输出给客户端浏览WritableWorkbook wk=Workbook.createWorkbook(output);///创建可写入的Excel工作表WritableSheet sheet=wk.createSheet("成绩表", 0);//把单元格(column, row)到单元格(column1, row1)进行合并 。//mergeCells(column, row, column1, row1);sheet.mergeCells(0,0, 4,0);//单元格合并方法//创建WritableFont 字体对象,参数依次表示黑体、字号12、粗体、非斜体、不带下划线、亮蓝色WritableFont titleFont=new WritableFont(WritableFont.createFont("黑体"),12,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.LIGHT_BLUE);//创建WritableCellFormat对象,将该对象应用于单元格从而设置单元格的样式WritableCellFormat titleFormat=new WritableCellFormat();//设置字体格式titleFormat.setFont(titleFont);//设置文本水平居中对齐titleFormat.setAlignment(Alignment.CENTRE);//设置文本垂直居中对齐titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE);//设置背景颜色titleFormat.setBackground(Colour.GRAY_25);//设置自动换行titleFormat.setWrap(true);//添加Label对象,参数依次表示在第一列,第一行,内容,使用的格式Label lab_00=new Label(0,0,"学员考试成绩一览表",titleFormat);//将定义好的Label对象添加到工作表上,这样工作表的第一列第一行的内容为‘学员考试成绩一览表’并应用了titleFormat定义的样式sheet.addCell(lab_00);WritableCellFormat cloumnTitleFormat=new WritableCellFormat();cloumnTitleFormat.setFont(new WritableFont(WritableFont.createFont("宋体"),10,WritableFont.BOLD,false));cloumnTitleFormat.setAlignment(Alignment.CENTRE);Label lab_01=new Label(0,1,"姓名",cloumnTitleFormat);Label lab_11=new Label(1,1,"班级",cloumnTitleFormat);Label lab_21=new Label(2,1,"笔试成绩",cloumnTitleFormat);Label lab_31=new Label(3,1,"上机成绩",cloumnTitleFormat);Label lab_41=new Label(4,1,"考试日期",cloumnTitleFormat);sheet.addCell(lab_01);sheet.addCell(lab_11);sheet.addCell(lab_21);sheet.addCell(lab_31);sheet.addCell(lab_41);sheet.addCell(new Label(0,2,"李明"));sheet.addCell(new Label(1,2,"As178"));//定义数字格式NumberFormat nf=new NumberFormat("0.00");WritableCellFormat wcf=new WritableCellFormat(nf);//类似于Label对象,区别Label表示文本数据,Number表示数值型数据Number numlab_22=new Number(2,2,78,wcf);sheet.addCell(numlab_22);sheet.addCell(newNumber(3,2,87,new WritableCellFormat(new NumberFormat("#.##") )));//定义日期格式DateFormat df=new DateFormat("yyyy-MM-dd hh:mm:ss");//创建WritableCellFormat对象WritableCellFormat datewcf=new WritableCellFormat(df);//类似于Label对象,区别Label表示文本数据,DateTime表示日期型数据DateTime dtLab_42=new DateTime(4,2,new Date(),datewcf);sheet.addCell(dtLab_42);//将定义的工作表输出到之前指定的介质中(这里是客户端浏览器)wk.write();//操作完成时,关闭对象,释放占用的内存空间wk.close();加下划线这部分代码是B/S模式中采用的输出方式,而不是输出到本地指定的磁盘目录 。该代码表示将temp.xls的Excel文件通过应答实体(response)输出给请求的客户端浏览器,下载到客户端本地(保存或直接打开) 。若要直接输出到磁盘文件可采用下列代码替换加下划线这部分代码File file=new File("D://temp.xls");WritableWorkbook wwb = Workbook.createWorkbook(file);