技术中心

这里象征着我们的态度和能力

>Java的poi技术读取和导入Excel
作者:中国IT实验室    来源:中国IT实验室    发布时间:2012-04-01      浏览次数:7072
分享到:
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

    报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用性,不方便用户进行个性化编辑。Java程序由于其跨平台特性,不能直接操纵Excel。因此,本文探讨一下POI视线Java程序进行Excel的读取和导入。

    项目结构:

java_poi_excel

用到的Excel文件:

xls

XlsMain .java 类

//该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版)

  1. import java.io.FileInputStream;  
  2. import java.io.IOException;  
  3. import java.io.InputStream;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.    
  7. import org.apache.poi.hssf.usermodel.HSSFCell;  
  8. import org.apache.poi.hssf.usermodel.HSSFRow;  
  9. import org.apache.poi.hssf.usermodel.HSSFSheet;  
  10. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  11.    
  12.    
  13. /**  
  14.  *  
  15.  * @author Hongten</br>  
  16.  *  
  17.  *         参考地址:http://hao0610.iteye.com/blog/1160678  
  18.  *  
  19.  */ 
  20. public class XlsMain {  
  21.    
  22.     public static void main(String[] args) throws IOException {  
  23.         XlsMain xlsMain = new XlsMain();  
  24.         XlsDto xls = null;  
  25.         List<XlsDto> list = xlsMain.readXls();  
  26.            
  27.         try {  
  28.             XlsDto2Excel.xlsDto2Excel(list);  
  29.         } catch (Exception e) {  
  30.             e.printStackTrace();  
  31.         }  
  32.         for (int i = 0; i < list.size(); i++) {  
  33.             xls = (XlsDto) list.get(i);  
  34.             System.out.println(xls.getXh() + "    " + xls.getXm() + "    " 
  35.                     + xls.getYxsmc() + "    " + xls.getKcm() + "    " 
  36.                     + xls.getCj());  
  37.         }  
  38.    
  39.     }  
  40.    
  41.     /**  
  42.      * 读取xls文件内容  
  43.      *  
  44.      * @return List<XlsDto>对象  
  45.      * @throws IOException  
  46.      *             输入/输出(i/o)异常  
  47.      */ 
  48.     private List<XlsDto> readXls() throws IOException {  
  49.         InputStream is = new FileInputStream("pldrxkxxmb.xls");  
  50.         HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);  
  51.         XlsDto xlsDto = null;  
  52.         List<XlsDto> list = new ArrayList<XlsDto>();  
  53.         // 循环工作表Sheet  
  54.         for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {  
  55.             HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);  
  56.             if (hssfSheet == null) {  
  57.                 continue;  
  58.             }  
  59.             // 循环行Row  
  60.             for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {  
  61.                 HSSFRow hssfRow = hssfSheet.getRow(rowNum);  
  62.                 if (hssfRow == null) {  
  63.                     continue;  
  64.                 }  
  65.                 xlsDto = new XlsDto();  
  66.                 // 循环列Cell  
  67.                 // 0学号 1姓名 2学院 3课程名 4 成绩  
  68.                 // for (int cellNum = 0; cellNum <=4; cellNum++) {  
  69.                 HSSFCell xh = hssfRow.getCell(0);  
  70.                 if (xh == null) {  
  71.                     continue;  
  72.                 }  
  73.                 xlsDto.setXh(getValue(xh));  
  74.                 HSSFCell xm = hssfRow.getCell(1);  
  75.                 if (xm == null) {  
  76.                     continue;  
  77.                 }  
  78.                 xlsDto.setXm(getValue(xm));  
  79.                 HSSFCell yxsmc = hssfRow.getCell(2);  
  80.                 if (yxsmc == null) {  
  81.                     continue;  
  82.                 }  
  83.                 xlsDto.setYxsmc(getValue(yxsmc));  
  84.                 HSSFCell kcm = hssfRow.getCell(3);  
  85.                 if (kcm == null) {  
  86.                     continue;  
  87.                 }  
  88.                 xlsDto.setKcm(getValue(kcm));  
  89.                 HSSFCell cj = hssfRow.getCell(4);  
  90.                 if (cj == null) {  
  91.                     continue;  
  92.                 }  
  93.                 xlsDto.setCj(Float.parseFloat(getValue(cj)));  
  94.                 list.add(xlsDto);  
  95.             }  
  96.         }  
  97.         return list;  
  98.     }  
  99.    
  100.     /**  
  101.      * 得到Excel表中的值  
  102.      *  
  103.      * @param hssfCell  
  104.      *            Excel中的每一个格子  
  105.      * @return Excel中每一个格子中的值  
  106.      */ 
  107.     @SuppressWarnings("static-access")  
  108.     private String getValue(HSSFCell hssfCell) {  
  109.         if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {  
  110.             // 返回布尔类型的值  
  111.             return String.valueOf(hssfCell.getBooleanCellValue());  
  112.         } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {  
  113.             // 返回数值类型的值  
  114.             return String.valueOf(hssfCell.getNumericCellValue());  
  115.         } else {  
  116.             // 返回字符串类型的值  
  117.             return String.valueOf(hssfCell.getStringCellValue());  
  118.         }  
  119.     }  
  120.    

[1] [2] 下一页

4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 昆明奥远科技有限公司版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号 增值电信业务经营许可证号:滇B2-20110045
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730