使用POI实现在java程序中导入导出Excel文件数据

  1. POI的下载与安装  
  2.   
  3.   请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bin-2.5.1-final-20040804.zip,解压缩后得到如图2.1所示的目录结构。我们主要用到poi-2.5.1-final-20040804.jar这个库文件。请把poi-2.5.1-final-20040804.jar这个文件的路径添加到系统环境变量classpath中,否则无法编译下面的示例程序。  
  4.   
  5. 图2.1 POI的目录结构  
  6.   
  7.   POI使用初步  
  8.   
  9.   POI提供给用户使用的对象在org.apache.poi.hssf.usermodel包中,主要部分包括Excel对象、样式和格式,还有辅助操作等。  
  10.   
  11.   最主要的几个对象如表3.1所示:  
  12.   
  13.   表3.1 POI主要对象  
  14.   
  15. POI对象名称  
  16.   
  17. 对应的Excel对象  
  18.   
  19. HSSFWorkbook  
  20.   
  21. 工作簿  
  22.   
  23. HSSFSheet  
  24.   
  25. 工作表  
  26.   
  27. HSSFRow  
  28.   
  29. 行  
  30.   
  31. HSSFCell  
  32.   
  33. 单元格  
  34.   
  35.   
  36.   下面我们来看如下的例子,使用表3.1中的对象在程序的当前目录下创建一个Excel文件test.xls,在第一个单元格中写入内容,然后读出第一个单元格的内容。  
  37.   
  38.   完整的程序如下:  
  39.   
  40. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  41. import org.apache.poi.hssf.usermodel.HSSFSheet;  
  42. import org.apache.poi.hssf.usermodel.HSSFRow;  
  43. import org.apache.poi.hssf.usermodel.HSSFCell;  
  44. import java.io.FileOutputStream;  
  45. import java.io.FileInputStream;  
  46.   
  47. public class CreateXL  
  48. {  
  49.  public static String xlsFile="test.xls"; //产生的Excel文件的名称  
  50.  public static void main(String args[])  
  51.  {  
  52.   try  
  53.   {  
  54.    HSSFWorkbook workbook = new HSSFWorkbook(); //产生工作簿对象  
  55.    HSSFSheet sheet = workbook.createSheet(); //产生工作表对象  
  56.    //设置第一个工作表的名称为firstSheet  
  57.    //为了工作表能支持中文,设置字符编码为UTF_16  
  58.    workbook.setSheetName(0,"firstSheet",HSSFWorkbook.ENCODING_UTF_16);  
  59.    //产生一行  
  60.    HSSFRow row = sheet.createRow((short)0);  
  61.    //产生第一个单元格  
  62.    HSSFCell cell = row.createCell((short) 0);  
  63.    //设置单元格内容为字符串型  
  64.    cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
  65.    //为了能在单元格中写入中文,设置字符编码为UTF_16。  
  66.    cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
  67.    //往第一个单元格中写入信息  
  68.    cell.setCellValue("测试成功");  
  69.    FileOutputStream fOut = new FileOutputStream(xlsFile);  
  70.    workbook.write(fOut);  
  71.    fOut.flush();  
  72.    fOut.close();  
  73.    System.out.println("文件生成...");  
  74.    //以下语句读取生成的Excel文件内容  
  75.    FileInputStream fIn=new FileInputStream(xlsFile);  
  76.    HSSFWorkbook readWorkBooknew HSSFWorkbook(fIn);  
  77.    HSSFSheet readSheetreadWorkBook.getSheet("firstSheet");  
  78.    HSSFRow readRow =readSheet.getRow(0);  
  79.    HSSFCell readCell = readRow.getCell((short)0);  
  80.    System.out.println("第一个单元是:" + readCell.getStringCellValue());  
  81.   }  
  82.   catch(Exception e)  
  83.   {  
  84.    System.out.println(e);  
  85.   }  
  86.  }  
  87. }  
  88.   
  89.   
  90.   与数据库结合使用  
  91.   
  92.   使用POI,结合JDBC编程技术,我们就可以方便地将数据库中的数据导出生成Excel报表。其关键代码如下:  
  93.   
  94. /*把数据集rs中的数据导出至Excel工作表中。  
  95. *传入参数:数据集rs,Excel文件名称xlsName,工作表名称sheetName。  
  96. */  
  97.   
  98. public static void resultSetToExcel(ResultSet rs,String xlsName,String sheetName) throws Exception  
  99. {  
  100.  HSSFWorkbook workbook = new HSSFWorkbook();  
  101.  HSSFSheet sheet = workbook.createSheet();  
  102.  workbook.setSheetName(0,sheetName,HSSFWorkbook.ENCODING_UTF_16);  
  103.  HSSFRow rowsheet.createRow((short)0);;  
  104.  HSSFCell cell;  
  105.  ResultSetMetaData md=rs.getMetaData();  
  106.  int nColumn=md.getColumnCount();  
  107.  //写入各个字段的名称  
  108.  for(int i=1;i<=nColumn;i++)  
  109.  {  
  110.   cell = row.createCell((short)(i-1));  
  111.   cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
  112.   cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
  113.   cell.setCellValue(md.getColumnLabel(i));  
  114.  }  
  115.   
  116.  int iRow=1;  
  117.  //写入各条记录,每条记录对应Excel中的一行  
  118.  while(rs.next())  
  119.  {rowsheet.createRow((short)iRow);;  
  120.   for(int j=1;j<=nColumn;j++)  
  121.   {  
  122.    cell = row.createCell((short)(j-1));  
  123.    cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
  124.    cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
  125.    cell.setCellValue(rs.getObject(j).toString());  
  126.   }  
  127.   iRow++;  
  128.  }  
  129.  FileOutputStream fOut = new FileOutputStream(xlsName);  
  130.  workbook.write(fOut);  
  131.  fOut.flush();  
  132.  fOut.close();  
  133.  JOptionPane.showMessageDialog(null,"导出数据成功!");  
  134. }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值