`
hzywy
  • 浏览: 169188 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

excel导入数据--解析(2003与2007兼容)

阅读更多
   excel用java解析,开始的时候不难,但是难就难在2003版本与2007以上版本的兼容解析。搞了半天终于搞定了。下面是我修改的代码。
package com.test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.pojo.VHrUser;
 

/**

 * 用户从Excel批量导入

 */

public class UserImport  {

    

    private static final int version2003 = 2003;

    private static final int version2007 = 2007;

    private static int version = version2003;

    private static Workbook wb = null;

    private static Sheet sheet=null;

    private static Cell cell = null;

    private static org.apache.poi.ss.usermodel.Row row=null;

      


       public List readExcel(String excelFilePath) throws    IOException {

              if (excelFilePath.endsWith(".xls"))

            version = version2003;

        else if (excelFilePath.endsWith(".xlsx"))

            version = version2007;

 

        List list = new ArrayList();

         InputStream stream=null;

        if (version == version2003) {

            stream = new FileInputStream(excelFilePath);

             wb = (Workbook) new HSSFWorkbook(stream);

         } else if (version == version2007) {

             wb = (Workbook) new XSSFWorkbook(excelFilePath);

         }

             

               

              sheet = wb.getSheetAt(0);

             

             // 行数(从0开始,相当于最后一行的索引),列数

              int count_row=sheet.getLastRowNum(),count_cell=sheet.getRow(0).getPhysicalNumberOfCells();

             

              String[][] str=new String[count_row][count_cell];

             

              for (int i = 0; i < count_row; i++) {

                     for (int j = 0; j < count_cell; j++) {

                            row=sheet.getRow(i+1);

                            cell=((org.apache.poi.ss.usermodel.Row) row).getCell(j);

                           int type = cell.getCellType(); // 得到单元格数据类型
                           String k="";
                           switch (type) { // 判断数据类型
                                       case Cell.CELL_TYPE_BLANK:
                                               k = "";
                                               break;
                                       case Cell.CELL_TYPE_BOOLEAN:
                                               k = cell.getBooleanCellValue() + "";
                                               break;
                                      case Cell.CELL_TYPE_ERROR:
                                               k = cell.getErrorCellValue() + "";
                                               break;
                                     case Cell.CELL_TYPE_FORMULA:
                                               k = cell.getCellFormula();
                                               break;
                                     case Cell.CELL_TYPE_NUMERIC:
                                                if(DateUtil.isCellDateFormatted(cell)){
                                                         k = new DataFormatter().formatRawCellContents(cell.getNumericCellValue(), 0, "yyyy-mm-dd");// 格式化日期
                                                 }else{
                                                          k=cell.getNumericCellValue()+"";   
                                                  }
                                                    break;
                                     case Cell.CELL_TYPE_STRING:
                                              k = cell.getStringCellValue();
                                              break;
                                    default:
                                                   break;
                                          }

                           

                            str[i][j]=k;
                         

                     }

              }

              cell=null;

              row=null;

              sheet=null;

              wb=null;

             

             

            for (int k = 0; k < str.length; k++) {

                     String[] temp_str=str[k];
                    VHrUser vUser=new VHrUser();

                     for (int s = 0; s < temp_str.length; s++) {

                            vUser.setUsername(temp_str[s]);

                            vUser.setPassword(temp_str[s+1]);

                            vUser.setDate(temp_str[s+2]);
                            list.add(vUser);

                            break;

                     }
            }
              return list;

       }

 

       public static void main(String[] args){

              UserImport i=new UserImport();

              try {

                     List<VHrUser> vuser_list = i.readExcel("d:\\excel.xlsx");

                     for (VHrUser user : vuser_list) {

                            System.out.println("用户姓名=="+user.getUsername());

                     }
              } catch (IOException e) {

                     e.printStackTrace();

              }

              System.exit(0);

       }

}


package com.pojo;

public class VHrUser {
    private String username;
    private String password;
    private String date;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}
    
}
分享到:
评论

相关推荐

    织梦实现后台excel表格导入数据-十里.rar

    1. **导入流程**:通常,实现Excel导入数据涉及以下步骤: - 准备Excel文件:整理好需要导入的数据,确保格式与数据库字段对应。 - 编写或配置导入脚本:在织梦后台,开发者需要编写一个PHP脚本,解析Excel文件,...

    导入Excel2003-2007兼容问题,4个包

    标题中的"导入Excel2003-2007兼容问题,4个包"指的就是这种兼容包,它们可以安装在Excel 2003上,使得用户能够打开、编辑和保存Excel 2007创建的.xlsx文件。 描述中提到的“这4个jar包完美解决兼容性问题”表明这些...

    好用的excel导入导出工具for Java(兼容2003和2007)

    本文将深入探讨如何使用一个优秀的Java库来高效地实现Excel的导入和导出,尤其针对Excel 2003和2007格式的兼容性。 标题中的“好用的excel导入导出工具for Java”指的是Java开发中的一种专门处理Excel的库,它允许...

    js对excel导入解析与导出

    1. **Excel导入解析**: - 使用库:`xlsx`库是一个广泛使用的JavaScript库,它支持读取和写入多种文件格式,包括.xlsx、.xls、.csv等。通过`XLSX.read()`方法,我们可以读取Excel文件并将其解析为JSON对象,方便...

    pb写的函数-excel文件导入到数据窗口

    在导入Excel数据时,确保Excel表头与数据窗口字段对应是关键步骤。通常,开发者会编写一个全局函数,通过比较两个数据结构的列名来实现自动匹配。这个函数可能会包括以下步骤: 1. **读取Excel文件**:使用PB的ADO...

    excel 2003导入升级到excel 2007

    在从Excel 2003迁移到更高版本,如Excel 2007时,用户可能会遇到兼容性问题、功能差异以及数据格式的变化。下面我们将详细探讨这些方面: 1. **兼容性问题**: - Excel 2003使用的是.XLS文件格式,而Excel 2007...

    GOOGLE导出excel数据-通用版V2.0_KMLtoexcel_excel_V2_

    3. KML到Excel转换:这个过程通常涉及到解析KML文件中的地理位置数据,并将其导入到Excel表格中,以便于进一步的分析和操作。转换可能涉及提取坐标、解析地标、路径等信息。 4. 宏(Macros):在Excel中,宏是一...

    jeecg导入Excel

    1. **Excel导入原理**: Jeecg框架提供了对Excel数据导入的支持,其工作原理通常是读取Excel文件中的数据,然后按照预定义的映射规则,将这些数据存储到数据库中。这一过程涉及到了文件读取、数据解析、数据验证...

    obsidian-excel-to-markdown-table-0.4.0.rar

    - **数据分析**:对于需要频繁分析数据的知识工作者,可以直接在Obsidian中导入Excel表格,便于快速查看和编辑数据,同时Markdown格式方便与其他系统集成。 - **项目管理**:在项目管理中,可以创建任务清单、进度...

    从Excel导入数据到Sqlserver 2008 R2

    在SQL Server 2008 R2中,从Excel导入数据是一个常见的操作,这有助于将大量数据快速转移到数据库系统,以便进行分析、处理或存储。然而,这个过程可能会遇到一些挑战,以下是一些关键点,确保您能顺利进行数据导入...

    Springboot+Poi实现Excel的导入导出

    2. **Excel导入**: - 读取Excel文件:使用POI库,打开本地文件,获取工作簿和工作表。 - 数据解析:遍历每一行,读取每个单元格的数据,根据业务需求进行类型转换。 - 数据验证:对导入的数据进行校验,确保符合...

    mssql2000导入excel数据

    - 安全性:直接从Excel导入数据可能会引入潜在的安全风险,比如恶意代码。因此,建议先对Excel数据进行清理和验证。 在提供的文件“mssql导入数据.doc”中,可能详细阐述了这些步骤,包括具体的操作截图和可能遇到...

    ASP.NET 导入、导出Excel (支持Office Excel 2003、 2007)

    综上所述,ASP.NET实现Excel导入导出涉及多种技术和策略,开发者可以根据项目需求选择合适的方法。无论是直接操作Excel对象,还是利用OpenXML或第三方库,都需要考虑兼容性、性能和安全性等因素。在实际开发过程中,...

    Json-Excel导入导出

    以下是使用`JxonExcel`进行JSON-Excel导入导出的一些关键知识点: 1. **安装**:首先,你需要在项目中引入`JxonExcel`库。如果你使用的是Java项目,可以通过Maven或Gradle等构建工具添加依赖。对于其他语言,例如...

    JavaScript 导入 excel 兼容IE11

    在JavaScript中导入Excel文件,尤其是在兼容古老的Internet Explorer 11(IE11)浏览器时,需要考虑到这个浏览器并不支持现代的File API和其他先进的Web技术。本文将深入探讨如何实现这一功能,以及涉及到的关键知识...

    ASP.NET批量导入Excel兼容2007

    总的来说,ASP.NET批量导入Excel兼容2007涉及的主要知识点包括:使用第三方库(如NPOI、EPPlus、Aspose.Cells)操作Excel文件,读取和解析数据,批量处理与优化,数据验证,错误处理以及用户交互设计。通过掌握这些...

    Java解析Excel兼容2003和2007(有实例和类包)

    本篇将深入探讨如何使用POI库来解析和创建2003及2007版本的Excel文件,并提供相关实例和类包。 Apache POI提供了两个主要的API,HSSF(Horrible Spreadsheet Format)用于处理老版的BIFF8格式(.xls,Excel 2003及...

    JS导入导出Excel 兼容IE、Firefox、Chrome等浏览器

    `xlsx`库能够解析和生成Excel格式的数据,允许开发者在前端进行数据的导入和导出,无需服务器端的支持。 1. **Excel文件格式**:Excel文件通常是`.xlsx`格式,这是一种基于Open XML标准的文件格式,由一系列XML文档...

Global site tag (gtag.js) - Google Analytics