java导入导出代码详解


最后更新:2018-10-10 / 围观:1 次 / 来源:zhixing123.cn / 作者:佚名

import jxl.Workbook; import jxl.format.UnderlineStyle; import jxl.write.Label; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException;

 

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 org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.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 fileName){ 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("工作表名称", 0); //下面开始添加单元格 for(int i=0;i<10;i++){ for(int j=0;j<5;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 { //从内存中写入文件中 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(String 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的第一行对象 为了得到模板样式 HSSFRow 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 HSSFCellStyle[columns]; //一次性创建所有列的样式放在数组里 for (int s = 0; s < columns; s++) { //得到数组实例 styleArray[s] = 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++) { //依次取出对应与colunmId列的值 //每一个单元格的值 String dataValue = (String) valueList.get(columnId); //取出colunmId列的的style //模板每一列的样式 HSSFCellStyle style = styleArray[columnId]; //取模板第colunmId列的单元格对象 //模板单元格对象 HSSFCell templateCell = templateRow.getCell((short) columnId); //创建一个新的rowId行 行对象 //新建的行对象 HSSFRow hssfRow = templateSheet.createRow(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); //设置到新单元格上 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.close(); } /** * 导出数据为XLS格式 * @param fos 生成Excel文件Path * @param bo 要导入的数据 */ public static void writeExcelBo(String fos, java.util.List ve) { jxl.write.WritableWorkbook wwb; try { wwb= Workbook.createWorkbook(new File(fos)); jxl.write.WritableSheet ws= wwb.createSheet("a", 10); ws.addCell(new jxl.write.Label(0, 1, "b")); ws.addCell(new jxl.write.Label(1, 1, "c")); ws.addCell(new jxl.write.Label(2, 1, "d")); ws.addCell(new jxl.write.Label(3, 1, "e")); 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.write.WritableFont(WritableFont.ARIAL,255,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); //jxl.write.WritableCellFormat wcfFC= new jxl.write.WritableCellFormat(wfc); ws.addCell(new jxl.write.Label(0, 0, "abcd!")); wwb.write(); // 关闭Excel工作薄对象 wwb.close(); } catch (IOException e){ } catch (RowsExceededException e){ } catch (WriteException e){ } } public static void main(String[] args) { writeExcel("c:\Test测试Excel.xls"); System.out.println("OK"); ArrayList list = new ArrayList(); for (int i = 0; i < 10; i++) { BookVO book = new BookVO(); book.setBookName("WebWork in action+"+i); book.setBookAuthor("aa+"+i); book.setBookPrice("cc+"+i); book.setBookConcern("YY+"+i); list.add(book); } writeExcelBo("c:\XX.xls",list); System.err.println("OK!");

 


【日大侠】所载文章部分来自网络,如果您有异议或者版权等方面的问题,请将详细信息(标题、链接等)通过底部【联系我们】发给【日大侠】,【日大侠】会在收到邮件后7个工作日内进行处理,感谢您对【日大侠】的关注与支持!

最新图文


访问和使用 日大侠,即表明您已仔细阅读并且完全接受和遵守 日大侠 的版权声明。
ICP备18039168号 | 基于 Destoon 构架
日大侠QQ交流群:日大侠QQ交流群
© 2018 日大侠