《java解析并且操作excel 方法》由会员分享,可在线阅读,更多相关《java解析并且操作excel 方法(42页珍藏版)》请在金锄头文库上搜索。
1、java解析并且操作excel 方法 最近需求变化,需要把excel导入 我以前没有做过,所以我查了一些资料 和参考别人的代码以下是多种方式:import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import jxl.Workbook;import jxl.format.UnderlineStyle;import jxl.write.
2、Label;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf
3、.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class ExcelOpt /* 生成一个Excel文件 jxl* param fileName 要生成的Excel文件名 * jxl.jar 版本:2.6 */ public static void writeExcel(String fi
4、leName) WritableWorkbook wwb = null; try /首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(new File(fileName); catch (IOException e) e.printStackTrace(); if(wwb!=null) /创建一个可写入的工作表 /Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置 WritableSheet ws = wwb.createSheet(工作表名
5、称, 0); /下面开始添加单元格 for(int i=0;i10;i+) for(int j=0;j5;j+) /这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行 Label labelC = new Label(j, i, 这是第+(i+1)+行,第+(j+1)+列); try /将生成的单元格添加到工作表中 ws.addCell(labelC); catch (RowsExceededException e) e.printStackTrace(); catch (WriteException e) e.printStackTrace(); try /从内存中写入文件中
6、wwb.write(); /关闭资源,释放内存 wwb.close(); catch (IOException e) e.printStackTrace(); catch (WriteException e) e.printStackTrace(); /* * 生成一个Excel文件POI* param inputFile 输入模板文件路径 * param outputFile 输入文件存放于服务器路径 * param dataList 待导出数据 * throws Exception * roseuid: */ public static void exportExcelFile(Strin
7、g inputFile,String outputFile,List dataList) throws Exception/用模板文件构造poi POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile);/创建模板工作表 HSSFWorkbook templatewb = new HSSFWorkbook(fs);/直接取模板第一个sheet对象 HSSFSheet templateSheet = templatewb.getSheetAt(1);/得到模板的第一个sheet的第一行对象 为了得到模板样式 H
8、SSFRow templateRow = templateSheet.getRow(0);/HSSFSheet timplateSheet = templatewb.getSheetAt(1); /取得Excel文件的总列数 int columns = templateSheet.getRow(short) 0).getPhysicalNumberOfCells();/ Debug.println(columns is : + columns); /=/创建样式数组 HSSFCellStyle styleArray = new HSSFCellStylecolumns;/一次性创建所有列的样式
9、放在数组里 for (int s = 0; s columns; s+) /得到数组实例 styleArrays = templatewb.createCellStyle();/循环对每一个单元格进行赋值 /定位行 for (int rowId = 1; rowId dataList.size(); rowId+) /依次取第rowId行数据 每一个数据是valueList List valueList = (List) dataList.get(rowId - 1);/定位列 for (int columnId = 0; columnId columns; columnId+) /依次取出对
10、应与colunmId列的值 /每一个单元格的值 String dataValue = (String) valueList.get(columnId);/取出colunmId列的的style /模板每一列的样式 HSSFCellStyle style = styleArraycolumnId;/取模板第colunmId列的单元格对象 /模板单元格对象 HSSFCell templateCell = templateRow.getCell(short) columnId);/创建一个新的rowId行 行对象 /新建的行对象 HSSFRow hssfRow = templateSheet.crea
11、teRow(rowId);/创建新的rowId行 columnId列 单元格对象 /新建的单元格对象 HSSFCell cell = hssfRow.createCell(short) columnId);/如果对应的模板单元格 样式为非锁定 if (templateCell.getCellStyle().getLocked() = false) /设置此列style为非锁定 style.setLocked(false);/设置到新的单元格上 cell.setCellStyle(style);/否则样式为锁定 else /设置此列style为锁定 style.setLocked(true);/
12、设置到新单元格上 cell.setCellStyle(style);/设置编码 cell.setEncoding(HSSFCell.ENCODING_UTF_16);/Debug.println(dataValue : + dataValue); /设置值 统一为String cell.setCellValue(dataValue);/设置输入流 FileOutputStream fOut = new FileOutputStream(outputFile);/将模板的内容写到输出文件上 templatewb.write(fOut);fOut.flush();/操作结束,关闭文件 fOut.c
13、lose(); /* 导出数据为XLS格式* param fos 生成Excel文件Path* param bo 要导入的数据*/public static void writeExcelBo(String fos, java.util.List ve)jxl.write.WritableWorkbook wwb;trywwb= Workbook.createWorkbook(new File(fos);jxl.write.WritableSheet ws= wwb.createSheet(上市新书, 10);ws.addCell(new jxl.write.Label(0, 1, 书名);w
14、s.addCell(new jxl.write.Label(1, 1, 作者);ws.addCell(new jxl.write.Label(2, 1, 定价);ws.addCell(new jxl.write.Label(3, 1, 出版社);int bookSize=ve.size();BookVO book = new BookVO(); for (int i= 0; i bookSize; i+)book= (BookVO)ve.get(i);ws.addCell(new jxl.write.Label(0, i + 2, + book.getBookName();ws.addCell(new jxl.write.Label(1, i + 2, book.getBookAuthor();ws.addCell(new jxl.write.Label(2, i + 2, + book.getBookPrice();ws.addCell(new jxl.write.Label(3, i + 2, book.getBookConcern();/ jxl.write.WritableFont wfc=/new jxl.