`

[转] Java的poi技术读取和导入Excel

    博客分类:
  • poi
阅读更多

项目结构:

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.    

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<XlsDto> 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

分享到:
评论

相关推荐

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。

    Java 使用poi导入excel 并使用xml做数据验证

    使用POI读取Excel数据的基本步骤如下: 1. 加载Excel文件:使用`WorkbookFactory.create()`方法创建一个`Workbook`实例。 2. 获取工作表:通过`Workbook`对象的`getSheetAt()`或`createSheet()`方法获取或创建工作...

    java poi 导入大数据量Excel数据 防止内存溢出处理.zip

    Java中的Apache POI库是用于读取和写入Microsoft Office格式文件,特别是Excel文档的流行工具。然而,当处理大数据量的Excel文件时,POI可能会导致内存溢出(Out of Memory, OOM),因为默认情况下它会将整个工作簿...

    java poi读取Excel需要导入的所有包

    在使用Java POI进行Excel读取操作时,需要导入一系列的库文件,以确保程序能够正确解析和操作Excel数据。这里提到的文件是Java POI库的不同组件和依赖,它们在处理不同版本的Excel文件时起着关键作用。 1. **poi-...

    Java poi 实现excel导入导出

    在Java编程环境中,Apache POI库是一个非常重要的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,尤其是Excel(.xlsx 和 .xls)文件。本教程将深入探讨如何利用Java POI库来实现Excel的导入与导出...

    java poi操作excel批量导入导出项目需要的jar包

    Java中的Apache POI库是处理...以上是Java POI操作Excel的基本概念和关键点,理解并熟练运用这些知识点,你就可以在项目中高效地进行批量导入导出操作了。记住,持续学习和适应新的库版本是保持技术领先的关键。

    Java通过POI读取Excel遍历数据,批量生成word文档

    Apache POI是一个开源项目,它允许Java开发者处理Microsoft Office格式的文件,如Excel(.xlsx或.xls)和Word(.docx)。 首先,我们需要导入Apache POI的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下...

    使用poi读取、写入复杂excel工具类(包含样式)

    使用poi读取写入复杂excel内容包括样式,工具类

    java的poi技术读取和导入Excel实例

    本篇文章将深入探讨如何使用POI技术来读取和导入Excel数据,这对于需要生成报表或者处理大量数据的Java开发者来说是非常实用的。 首先,我们需要了解Apache POI的基本概念。POI提供了一组API,允许开发者创建、修改...

    java_poi导入excel通用工具类V0915

    "java_poi导入excel通用工具类V0915" 提供了一种通用的方式来处理Excel数据的导入工作,它支持多种赋值方式,包括单个对象、列表对象以及指定坐标的赋值。 首先,让我们深入理解一下这个工具类的主要功能: 1. **...

    java_poi导入excel通用工具类

    这个"java_poi导入excel通用工具类"是利用Java的POI库和一些额外的技术来实现对Excel数据的导入功能,使得开发人员能够方便地将Excel数据转化为Java对象或者对已有对象进行填充。下面我们将深入探讨相关的知识点。 ...

    java使用 poi 读取excel

    Java 使用 Apache POI 读取 Excel 是一个常见的任务,在处理数据导入、导出或数据分析时非常有用。Apache POI 是一个流行的开源库,它允许 Java 开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 ...

    POI实现Excel导入导出并附带加载进度条

    Apache POI是一个强大的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,...

    java_poi导入 excel

    这篇博文链接虽然没有提供具体内容,但我们可以根据“java_poi导入excel”这个主题深入探讨Java POI库在Excel导入方面的应用。 首先,Java POI 提供了HSSF(用于老版本的BIFF格式,如.xls)和XSSF(用于新版本的...

    Java用poi读取excel文件

    Java 使用 POI 读取 Excel 文件 Java 是一种广泛使用的编程语言,而 Excel 是一种常用的电子表格软件。有时候,我们需要在 Java 程序中读取 Excel 文件的内容,例如将 Excel 表格中的数据导入到数据库中或者进行...

    java的poi技术读取Excel数据到MySQL

    接下来,我们创建一个Java类,用POI读取Excel文件。首先打开文件并创建一个Workbook对象,然后获取第一个Sheet,接着遍历每个Row和Cell以获取数据: ```java import org.apache.poi.ss.usermodel.*; import org....

    Excel.zip java-poi-excel 导入Import导出Goout excel表格

    在Java编程领域,Apache POI库是一个非常重要的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Excel工作簿。本项目"ExcelImport.zip"专注于使用Java POI库处理Excel表格的导入与导出功能,...

    poi.zip java读取excel文件

    Java 读取 Excel 文件是许多开发任务中的常见需求,Apache POI 是一个广泛使用的开源库,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在本案例中,提供的压缩包 "poi.zip" 包含了两个子文件:poi-bin-...

    JAVA实现数据库数据导入导出到Excel(POI)所需jar包

    在Java开发中,有时我们需要将数据库中的数据导出到Excel文件,或者从Excel文件导入数据到数据库。Apache POI是一个流行的API,专为处理Microsoft Office格式的文件,如Excel(.xlsx, .xls)。本教程将详细介绍如何...

    java上传并读取excel工具类

    在Java编程中,处理Excel文件是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成等场景。本篇文章将深入探讨如何使用Java...通过熟练掌握这些技术,你可以高效地在Java应用中实现Excel的上传和读取功能。

Global site tag (gtag.js) - Google Analytics