思诚科技 seecen LOGO
咨询热线:0791-87557233
 您现在的位置:  首页 > Java EE 

java中的jxl及poi实现读取、修改、另存excel

来源:思诚科技    更新时间:2018-4-25

java实现读取excel并修改部分内容最终写入到新的文件中

pom.xml引入相关的jxl.jar与poi.jar

pom文件如下

[html] view plain copy
  1. <dependencies>  
  2.     <!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->  
  3.     <dependency>  
  4.         <groupId>net.sourceforge.jexcelapi</groupId>  
  5.         <artifactId>jxl</artifactId>  
  6.         <version>2.6.12</version>  
  7.     </dependency>  
  8.     <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->  
  9.     <dependency>  
  10.         <groupId>org.apache.poi</groupId>  
  11.         <artifactId>poi</artifactId>  
  12.         <version>3.17</version>  
  13.     </dependency>  
  14.    </dependencies>  

java实现具体代码如下:

[java] view plain copy
  1. package Util;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.FileOutputStream;  
  7. import java.io.FileReader;  
  8. import java.io.IOException;  
  9. import java.io.InputStream;  
  10. import java.io.InputStreamReader;  
  11.   
  12. import org.apache.poi.hssf.usermodel.HSSFCell;  
  13. import org.apache.poi.hssf.usermodel.HSSFComment;  
  14. import org.apache.poi.hssf.usermodel.HSSFRow;  
  15. import org.apache.poi.hssf.usermodel.HSSFSheet;  
  16. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  17. import org.apache.poi.ss.util.CellAddress;  
  18.   
  19. import jxl.Cell;  
  20. import jxl.Sheet;  
  21. import jxl.Workbook;  
  22. import jxl.read.biff.BiffException;  
  23. import jxl.write.Label;  
  24. import jxl.write.WritableCell;  
  25. import jxl.write.WritableSheet;  
  26. import jxl.write.WritableWorkbook;  
  27.   
  28. public class ExcelHandler {  
  29.     /** 
  30.      * jxl读取文件 
  31.      *workbook为只读文件 可以读取内容 
  32.      * @throws BiffException 
  33.      * @throws IOException 
  34.      */  
  35.     public static void ExcelReader(){  
  36.         File file=new File("C:\\Users\\Administrator\\Desktop\\excels\\example.xls");  
  37.         Workbook workbook;  
  38.         try {  
  39.             workbook = Workbook.getWorkbook(file);  
  40.             Sheet sheet=workbook.getSheet(0);  
  41.             Cell cell=sheet.getCell(21);  
  42.             Cell cell1=sheet.getCell(21);  
  43.             Cell cell2=sheet.getCell(21);  
  44.             Cell cell3=sheet.getCell(21);  
  45.             System.out.println(cell.getContents());  
  46.         } catch (BiffException | IOException e) {  
  47.             // TODO Auto-generated catch block  
  48.             e.printStackTrace();  
  49.         }  
  50.     }  
  51.     /**‘ 
  52.      * jxl实现excel读取并输出 
  53.      * 读取excel修改之后重新输出 
  54.      */  
  55.     public static void ModifyExcelAndOutput() {  
  56.         try {  
  57.             File file=new File("C:\\Users\\Administrator\\Desktop\\excels\\example.xls");  
  58.             //这里读出来的workbook作为模版  
  59.             Workbook workbook=Workbook.getWorkbook(file);  
  60.             //这里是将要输出的workbook  
  61.             for(int i=0;i<2;i++){//这里模拟输出两个文件  
  62.                 //输出文件名  
  63.                 String outFileName="C:\\Users\\Administrator\\Desktop\\excels\\output"+i+".xls";  
  64.                 // jxl.Workbook 对象是只读的,所以如果要修改Excel,需要创建一个可读的副本,副本指向原Excel文件(即下面的new File(excelpath))    
  65.                 //WritableWorkbook如果直接createWorkbook模版文件会覆盖原有的文件  
  66.                 WritableWorkbook writeBook=Workbook.createWorkbook(new File(outFileName),workbook);   
  67.                 //读取第一个sheet  
  68.                 WritableSheet sheet=writeBook.getSheet(0);  
  69.                 //读取将要修改的cell  
  70.                 WritableCell cell=sheet.getWritableCell(21);  
  71.                 //获取上一部cell的格式  
  72.                 jxl.format.CellFormat cf=cell.getCellFormat();  
  73.                 Label lable=new Label(21"商户名称:修改后的商户名"+i);  
  74.                 //将修改后的单元格格式设置成和原来一样的  
  75.                 lable.setCellFormat(cf);  
  76.                 //将修改后的cell放回sheet中  
  77.                 sheet.addCell(lable);  
  78.                 writeBook.write();  
  79.                 writeBook.close();  
  80.             }  
  81.             workbook.close();  
  82.         } catch (Exception e) {  
  83.             e.printStackTrace();  
  84.         }  
  85.     }  
  86.     /** 
  87.      * poi实现excel修改 
  88.      * 读取excel并且修改部分内容并输出 
  89.      */  
  90.     public static void ModifyAndExport() {  
  91.         InputStream io;  
  92.         try {  
  93.             io = new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\excels\\output0.xls"));  
  94.             HSSFWorkbook workbook = new HSSFWorkbook(io);  
  95.             HSSFSheet sheet=workbook.getSheetAt(0);  
  96.             for(int i=2;i<5;i++){  
  97.                 HSSFRow row=sheet.getRow(4);  
  98.                 HSSFCell cell=row.getCell(0);  
  99.                 cell.setCellValue("联系人姓名:王"+i+"麻子");  
  100.                 HSSFCell cell1=row.getCell(3);  
  101.                 cell1.setCellValue("手机:"+i+"10110");  
  102.                 String outputPath="C:\\Users\\Administrator\\Desktop\\excels\\output"+i+".xls";  
  103.                 FileOutputStream fo=new FileOutputStream(new File(outputPath));  
  104.                 workbook.write(fo);  
  105.             }  
  106.             workbook.close();  
  107.         } catch (IOException e) {  
  108.             // TODO Auto-generated catch block  
  109.             e.printStackTrace();  
  110.         }  
  111.           
  112.     }  
  113.     public static void main(String[] args) {  
  114.         ModifyAndExport();  
  115.     }  
  116. }  
  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2020