今天要用jxl.jar包实现数据excel生成

时间:2022-05-05 11:51:30

今天要用jxl.jar包实现数据excel生成,excel数据导入跟excel数据导出的功能。

不多说,上代码:O(∩_∩)O~

1.导入类:(用到的jxl包可以在这里免费下载:http://download.csdn.net/detail/wws199304/8175807)

[java]  view plain copy
  1. import java.io.File;  
  2. import java.util.Date;  
  3. import java.util.Scanner;  
  4.   
  5. import jxl.Cell;  
  6. import jxl.Sheet;  
  7. import jxl.Workbook;  
  8. import jxl.format.Colour;  
  9. import jxl.format.UnderlineStyle;  
  10. import jxl.write.DateFormat;  
  11. import jxl.write.DateTime;  
  12. import jxl.write.Label;  
  13. import jxl.write.NumberFormat;  
  14. import jxl.write.WritableCellFormat;  
  15. import jxl.write.WritableFont;  
  16. import jxl.write.WritableSheet;  
  17. import jxl.write.WritableWorkbook;  

2.创建excel表

[java]  view plain copy
  1. public static void writeExcel(String fileName){  
  2.           
  3.         WritableWorkbook wwb = null;  
  4.           
  5.         try {  
  6.             // 创建一个可写入的工作簿(WorkBook)对象,  
  7.             //这里用父类方法createWorkbook创建子类WritableWorkbook让我想起了工厂方法  
  8.             wwb = Workbook.createWorkbook(new File(fileName));  
  9.               
  10.             // 创建一个可写入的工作表   
  11.             // Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作簿中的位置  
  12.             WritableSheet ws = wwb.createSheet("sheetTest"0);  
  13.             for(int i=0;i<10;i++){  
  14.                 for(int j=0;j<5;j++){  
  15.                     Label labelC = new Label(j,i,"第"+(i+1)+"行,第"+(j+1)+"列");  
  16.                     ws.addCell(labelC);  
  17.                 }  
  18.             }  
  19.               
  20.             wwb.write();// 从内从中写入文件中  
  21.             wwb.close();  
  22.         } catch (Exception e) {  
  23.             // TODO Auto-generated catch block  
  24.             e.printStackTrace();  
  25.         }  
  26.         System.out.println("生成第一个Excel文件"+fileName+"成功");  
  27.     }  
调试结果:

今天要用jxl.jar包实现数据excel生成


3.修改excel:

[java]  view plain copy
  1. public static void writeExcel(String fileName){  
  2.           
  3.         WritableWorkbook wwb = null;  
  4.           
  5.         try {  
  6.             // 创建一个可写入的工作簿(WorkBook)对象,  
  7.             //这里用父类方法createWorkbook创建子类WritableWorkbook让我想起了工厂方法  
  8.             wwb = Workbook.createWorkbook(new File(fileName));  
  9.               
  10.             // 创建一个可写入的工作表   
  11.             // Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作簿中的位置  
  12.             WritableSheet ws = wwb.createSheet("sheetTest"0);  
  13.             for(int i=0;i<10;i++){  
  14.                 for(int j=0;j<5;j++){  
  15.                     Label labelC = new Label(j,i,"第"+(i+1)+"行,第"+(j+1)+"列");  
  16.                     ws.addCell(labelC);  
  17.                 }  
  18.             }  
  19.               
  20.             wwb.write();// 从内从中写入文件中  
  21.             wwb.close();  
  22.         } catch (Exception e) {  
  23.             // TODO Auto-generated catch block  
  24.             e.printStackTrace();  
  25.         }  
  26.         System.out.println("生成第一个Excel文件"+fileName+"成功");  
  27.     }  
  28.       
  29.     /** 
  30.      * excel文件的修改 
  31.      * @param fileName 文件路径+文件名+文件后缀 
  32.      */  
  33.     public static void writeConentToExcel(String fileName) throws Exception{  
  34.           
  35.         jxl.write.Number n = null;  
  36.         jxl.write.DateTime d = null;  
  37.           
  38.         File tempFile = new File(fileName);  
  39.         WritableWorkbook workbook = Workbook.createWorkbook(tempFile);  
  40.         WritableSheet sheet = workbook.createSheet("TestCreateExcel",0);  
  41.           
  42.         // 预定义的一些字体和格式, 字形、大小、加粗、倾斜、下划线、颜色  
  43.         // 头文件  
  44.         WritableFont headerFont = new WritableFont(WritableFont.ARIAL,15,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.GREEN);  
  45.         WritableCellFormat headerFormat = new WritableCellFormat(headerFont);  
  46.           
  47.         // 标题  
  48.         WritableFont titleFont = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.RED);  
  49.         WritableCellFormat titleFormat = new WritableCellFormat(titleFont);  
  50.           
  51.         // 内容  
  52.         WritableFont detFont = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);  
  53.         WritableCellFormat detFormat = new WritableCellFormat(detFont);  
  54.           
  55.         // number 格式  
  56.         NumberFormat nf=new NumberFormat("0.000");  
  57.         WritableCellFormat priceFormat = new WritableCellFormat(nf);  
  58.           
  59.         // 日期  
  60.         DateFormat df = new DateFormat("yyyy-MM-dd");  
  61.         WritableCellFormat dateFormat = new WritableCellFormat(df);  
  62.           
  63.         // 创建单元格  
  64.         Label l = new Label(0,0,"文件的头信息",headerFormat);  
  65.         sheet.addCell(l);  
  66.           
  67.         // 添加标题  
  68.         int column=0// 列  
  69.         //从列0开始循环,每次输出一个标题后都column++,2代表(2+1)行,titleFormat是指定格式  
  70.         l = new Label(column++,2,"姓名",titleFormat);  
  71.         sheet.addCell(l);  
  72.         l = new Label(column++,2,"日期",titleFormat);  
  73.         sheet.addCell(l);  
  74.         l = new Label(column++,2,"货币单位",titleFormat);  
  75.         sheet.addCell(l);  
  76.         l = new Label(column++,2,"薪水",titleFormat);  
  77.         sheet.addCell(l);  
  78.           
  79.         // 添加内容  
  80.         int i =0// 行  
  81.         column = 0// 列  
  82.         l = new Label(column++,i+3,"Golden",detFormat);  
  83.         sheet.addCell(l);  
  84.         d = new DateTime(column++,i+3,new Date(),dateFormat);  
  85.         sheet.addCell(d);  
  86.         l = new Label(column++,i+3,"¥",detFormat);  
  87.         sheet.addCell(l);  
  88.         n = new jxl.write.Number(column++,i+3,12000,priceFormat);  
  89.         sheet.addCell(n);  
  90.           
  91.         i++;  
  92.         column = 0// 列  
  93.         l = new Label(column++,i+3,"路上",detFormat);  
  94.         sheet.addCell(l);  
  95.         d = new DateTime(column++,i+3,new Date(),dateFormat);  
  96.         sheet.addCell(d);  
  97.         l = new Label(column++,i+3,"¥",detFormat);  
  98.         sheet.addCell(l);  
  99.         n = new jxl.write.Number(column++,i+3,15000,priceFormat);  
  100.         sheet.addCell(n);  
  101.           
  102.         i++;  
  103.         column = 0// 列  
  104.         l = new Label(column++,i+3,"Mr.Sandman",detFormat);  
  105.         sheet.addCell(l);  
  106.         d = new DateTime(column++,i+3,new Date(),dateFormat);  
  107.         sheet.addCell(d);  
  108.         l = new Label(column++,i+3,"¥",detFormat);  
  109.         sheet.addCell(l);  
  110.         n = new jxl.write.Number(column++,i+3,13000,priceFormat);  
  111.         sheet.addCell(n);  
  112.           
  113.         // 分别设置各列的宽度  
  114.         column=0;  
  115.         sheet.setColumnView(column++, 20);  
  116.         sheet.setColumnView(column++, 20);  
  117.         //货币单位列比较窄  
  118.         sheet.setColumnView(column++, 10);  
  119.         sheet.setColumnView(column++, 20);  
  120.           
  121.         workbook.write();  
  122.         workbook.close();  
  123.         System.out.println("内容写入"+fileName+"成功!");  


调试结果:

今天要用jxl.jar包实现数据excel生成


(⊙o⊙)。。。怎么是错误呀,原来是原来运行过的测试路径没有改,测试路径下的excel文件打开着。关掉重来吧!

这次正常了:

今天要用jxl.jar包实现数据excel生成


4.读取excel:

[java]  view plain copy
  1. Workbook book = Workbook.getWorkbook(new File(fileName)); // 构造Workbook(工作簿)对象  
  2.           
  3.         Sheet sheet = book.getSheet(0);  
  4.         // 得到第一列第一行的单元格  
  5.         int columNum = sheet.getColumns(); // 得到所有列  
  6.         int rowNum = sheet.getRows(); // 得到所有行  
  7.           
  8.         System.out.println("行:"+rowNum+"  列:"+columNum);  
  9.           
  10.         for(int i=0;i<rowNum;i++){// 读取行  
  11.             for(int j=0;j<columNum;j++){ //读取列  
  12.                 Cell cell = sheet.getCell(j, i);  
  13.                 String result = cell.getContents(); // 得到单元格的值  
  14.                 System.out.print(result);  
  15.                 System.out.print("\t");  
  16.             }  
  17.             System.out.println();  
  18.         }  
  19.         book.close(); // 关闭对象