Java的poi技术读取和导入Excel

来源:互联网 发布:软件开发培训费用 编辑:程序博客网 时间:2024/06/11 21:08

 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  
  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 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对象  
  45.      * @throws IOException  
  46.      *             输入/输出(i/o)异常  
  47.      */ 
  48.     private List readXls() throws IOException {  
  49.         InputStream is = new FileInputStream("pldrxkxxmb.xls");  
  50.         HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);  
  51.         XlsDto xlsDto = null;  
  52.         List list = new ArrayList();  
  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.    

  XlsDto2Excel.java类

  //该类重要负责向Excel(2003版)中插入数据

  1. import java.io.FileOutputStream;  
  2. import java.io.OutputStream;  
  3. import java.util.List;  
  4.    
  5. import org.apache.poi.hssf.usermodel.HSSFCell;  
  6. import org.apache.poi.hssf.usermodel.HSSFRichTextString;  
  7. import org.apache.poi.hssf.usermodel.HSSFRow;  
  8. import org.apache.poi.hssf.usermodel.HSSFSheet;  
  9. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  10.    
  11.    
  12. public class XlsDto2Excel {  
  13.    
  14.     /**  
  15.      *  
  16.      * @param xls  
  17.      *            XlsDto实体类的一个对象  
  18.      * @throws Exception  
  19.      *             在导入Excel的过程中抛出异常  
  20.      */ 
  21.     public static void xlsDto2Excel(List xls) throws Exception {  
  22.         // 猎取总列数  
  23.         int CountColumnNum = xls.size();  
  24.         // 创建Excel文档  
  25.         HSSFWorkbook hwb = new HSSFWorkbook();  
  26.         XlsDto xlsDto = null;  
  27.         // sheet 对应一个工作页  
  28.         HSSFSheet sheet = hwb.createSheet("pldrxkxxmb");  
  29.         HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开端  
  30.         HSSFCell[] firstcell = new HSSFCell[CountColumnNum];  
  31.         String[] names = new String[CountColumnNum];  
  32.         names[0] = "学号";  
  33.         names[1] = "姓名";  
  34.         names[2] = "学院";  
  35.         names[3] = "课程名";  
  36.         names[4] = "成绩";  
  37.         for (int j = 0; j < CountColumnNum; j++) {  
  38.             firstcell[j] = firstrow.createCell(j);  
  39.             firstcell[j].setCellValue(new HSSFRichTextString(names[j]));  
  40.         }  
  41.         for (int i = 0; i < xls.size(); i++) {  
  42.             // 创建一行  
  43.             HSSFRow row = sheet.createRow(i + 1);  
  44.             // 得到要插入的每一条记录  
  45.             xlsDto = xls.get(i);  
  46.             for (int colu = 0; colu <= 4; colu++) {  
  47.                 // 在一行内循环  
  48.                 HSSFCell xh = row.createCell(0);  
  49.                 xh.setCellValue(xlsDto.getXh());  
  50.                 HSSFCell xm = row.createCell(1);  
  51.                 xm.setCellValue(xlsDto.getXm());  
  52.                 HSSFCell yxsmc = row.createCell(2);  
  53.                 yxsmc.setCellValue(xlsDto.getYxsmc());  
  54.                 HSSFCell kcm = row.createCell(3);  
  55.                 kcm.setCellValue(xlsDto.getKcm());  
  56.                 HSSFCell cj = row.createCell(4);  
  57.                 cj.setCellValue(xlsDto.getCj());  
  58. (xlsDto.getMessage());  
  59.             }  
  60.         }  
  61.         // 创建文件输出流,准备输出电子表格  
  62.         OutputStream out = new FileOutputStream("POI2Excel/pldrxkxxmb.xls");  
  63.         hwb.write(out);  
  64.         out.close();  
  65.         System.out.println("数据库导出成功");  
  66.     }  
  67.    

  XlsDto .java类

  //该类是一个实体类

  1. public class XlsDto {  
  2.     /**  
  3.      * 选课号  
  4.      */ 
  5.     private Integer xkh;  
  6.     /**  
  7.      * 学号  
  8.      */ 
  9.     private String xh;  
  10.     /**  
  11.      * 姓名  
  12.      */ 
  13.     private String xm;  
  14.     /**  
  15.      * 学院  
  16.      */ 
  17.     private String yxsmc;  
  18.     /**  
  19.      * 课程号  
  20.      */ 
  21.     private Integer kch;  
  22.     /**  
  23.      * 课程名  
  24.      */ 
  25.     private String kcm;  
  26.     /**  
  27.      * 成绩  
  28.      */ 
  29.     private float cj;  
  30.     public Integer getXkh() {  
  31.         return xkh;  
  32.     }  
  33.     public void setXkh(Integer xkh) {  
  34.         this.xkh = xkh;  
  35.     }  
  36.     public String getXh() {  
  37.         return xh;  
  38.     }  
  39.     public void setXh(String xh) {  
  40.         this.xh = xh;  
  41.     }  
  42.     public String getXm() {  
  43.         return xm;  
  44.     }  
  45.     public void setXm(String xm) {  
  46.         this.xm = xm;  
  47.     }  
  48.     public String getYxsmc() {  
  49.         return yxsmc;  
  50.     }  
  51.     public void setYxsmc(String yxsmc) {  
  52.         this.yxsmc = yxsmc;  
  53.     }  
  54.     public Integer getKch() {  
  55.         return kch;  
  56.     }  
  57.     public void setKch(Integer kch) {  
  58.         this.kch = kch;  
  59.     }  
  60.     public String getKcm() {  
  61.         return kcm;  
  62.     }  
  63.     public void setKcm(String kcm) {  
  64.         this.kcm = kcm;  
  65.     }  
  66.     public float getCj() {  
  67.         return cj;  
  68.     }  
  69.     public void setCj(float cj) {  
  70.         this.cj = cj;  
  71.     }  
  72.        

  后台输出:

  数据库导出成功

  1.0 hongten 信息技术学院 计算机网络应用基础 80.0

  2.0 王五 信息技术学院 计算机网络应用基础 81.0

  3.0 李胜基 信息技术学院 计算机网络应用基础 82.0

  4.0 五班古 信息技术学院 计算机网络应用基础 83.0

  5.0 蔡诗芸 信息技术学院 计算机网络应用基础 84.0

  原文链接:http://www.cnblogs.com/hongten/archive/2012/02/22/java2poi.html


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 五年级上册数学应用题 小学二年级数学应用题 二年级数学下册应用题大全 三年级下册数学应用题 小学六年级数学应用题 六年级下册数学应用题 七年级上册数学应用题 四年级鸡兔同笼应用题 五年级小数除法应用题 五年级下册数学应用题 三年级上期数学应用题 小学三年级时间应用题 小学二年级数学应用题大全 小学三年级数学应用题上册 六年级工程问题应用题 六年级数学比例应用题 六年级数学工程应用题 五年级鸡兔同笼应用题 10以内的加减法应用题 五年级上册小数除法应用题 小学二年级数学应用题上册 小学三年级上册数学应用题 二年级数学除法应用题 小学二年级除法应用题 二年级下册奥数应用题 七年级数学方程应用题 五年级数学方程应用题 小学数学四年级应用题 小学四年级上册数学应用题 六年级数学方程应用题 二年级上学期数学应用题 小学五年级上册应用题 五年级列方程解应用题 六年级数学分数乘法应用题 三年级上学期数学应用题 小学五年级奥数应用题 小学三年级上册应用题 小学生六年级数学应用题 小学六年级分数乘法应用题 小学六年级上册数学应用题 八年级上册物理应用题