Java读取excel表格

Java读取excel表格

一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢

什么是Apache POI?

Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。

Apache POI

Apache POI是Apache软件基金会提供的100%开源库。大多数中小规模的应用程序开发主要依赖于Apache POI(HSSF+ XSSF)。它支持Excel 库的所有基本功能; 然而,呈现和文本提取是它的主要特点。

工作簿

这是创建或维护Excel工作簿的所有类的超接口。它属于org.apache.poi.ss.usermodel包。是实现此接口的两个类,如下所示:

  • HSSFWorkbook : 这个类有读取和.xls 格式和写入Microsoft Excel文件的方法。它与微软Office97-2003版本兼容。
  • XSSFWorkbook : 这个类有读写Microsoft Excel和OpenOffice的XML文件的格式.xls或.xlsx的方法。它与MS-Office版本2007或更高版本兼容。

HSSFWorkbook

它是在org.apache.poi.hssf.usermodel包的高层次的类。它实现了Workbook 接口,用于Excel文件中的.xls格式。下面列出的是一些本类下的方法和构造函数。

类的构造函数

S.No. 构造函数和说明
1
HSSFWorkbook()

从头开始创建一个新的HSSFWorkbook对象时。

2
HSSFWorkbook(DirectoryNode directory, boolean preserveNodes)

创建一个特定的目录中一个新的HSSFWworkbook对象。

3
HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes)

给定一个POIFSFileSystem对象和特定的目录中,它创建了一个SSFWorkbook对象读取指定的工作簿。

4
HSSFWorkbook(java.io.InputStream s)

创建使用输入流中的新HSSFWorkbook对象时。

5
HSSFWorkbook(java.io.InputStream s, boolean preserveNodes)

构建在输入流的POI文件系统。

6
HSSFWorkbook(POIFSFileSystem fs)

使用POIFSFileSystem对象构造的新HSSFWorkbook对象时。

7
HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes)

给定一个POIFSFileSystem对象时,它会创建一个新的HSSFWorkbook对象时读取指定的工作簿。

这些构造内的常用参数:

  • directory : 这是从POI文件系统处理的目录。
  • fs :它是包含簿流该POI的文件系统。
  • preservenodes : 这是决定是否保留其他节点像宏的可选参数。它消耗大量的内存,因为它存储在内存中的所有POIFileSystem(如果设置)。

注意:HSSFWorkbook类包含了许多方法;然而,它们仅与XLS格式兼容。在本教程中,重点是在Excel文件格式的最新版本。因此,HSSFWorkbook类的方法,这里没有列出。如果需要这些类的方法,那么请参照POI-HSSFWorkbook类API在 https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html.

XSSFWorkbook

它是用于表示高和低层次Excel文件格式的类。它属于org.apache.xssf.usemodel包,并实现Workbook接口。下面列出的是这个类的方法和构造函数。

类的构造函数

S.No. 构造函数和说明
1
XSSFWorkbook()

从头开始创建一个新的XSSFworkbook对象。

2
XSSFWorkbook(java.io.File file)

构造从给定文件中的XSSFWorkbook对象。

3
XSSFWorkbook(java.io.InputStream is)

构造一个XSSFWorkbook对象,通过缓冲整个输入流到内存中,然后为它打开一个OPCPackage对象。

4
XSSFWorkbook(java.lang.String path)

构建一个给定文件的完整路径的XSSFWorkbook对象。

Sheet

Sheet是在org.apache.poi.ss.usermodel包的接口,它是创建具有特定名称的高或低级别的电子表格的所有类的超接口。电子表格的最常见的类型是工作表,它被表示为单元的网格。

HSSFSheet

这是在org.apache.poi.hssf.usermodel包的类。它可以创建Excel电子表格,它允许在sheet 方式和表数据格式。

类的构造函数

S.No. 构造函数及描述
1
HSSFSheet(HSSFWorkbook workbook)

创建新HSSFSheet通过调用HSSFWorkbook从头开始创建一个表。

2
HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet)

创建HSSFSheet表示给定表对象。

XSSFSheet

这是代表了Excel电子表格的高级别代表的一类。这在org.apache.poi.hssf.usermodel包下。

类的构造函数

S.No. 构造函数及描述
1
XSSFSheet()

创造了新的XSSFSheet- 调用XSSFWorkbook从头开始创建一个表。

2
XSSFSheet(PackagePart part, PackageRelationship rel)

创建XSSFSheet表示给定包的一部分和关系。

类方法

S.No. 方法和描述
1
addMergedRegion(CellRangeAddress region)

添加单元的合并区域(因此这些单元格合并形成一个)。

2
autoSizeColumn(int column)

调整列宽,以适应的内容。

3
iterator()

此方法是用于rowIterator()的别名,以允许foreach循环

4
addHyperlink(XSSFHyperlink hyperlink)

注册超链接的集合中的超链接此工作表格上

对于此类的其余的方法,请参阅完整的API在:
https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html.

这是在org.apache.poi.ss.usermodel包的接口。它是用于一排的电子表格的高层表示。它是代表了POI库的行所有类的超接口。

XSSFRow

这是在org.apache.poi.xssf.usermodel包的类。它实现了Row接口,因此它可以在电子表格中创建行。下面列出的是这个类在方法和构造函数。

类方法

S.No. 描述
1
createCell(int columnIndex)

创建新单元行并返回。

2
setHeight(short height)

设置短单位的高度。

对于此类的其余的方法,参考如下链接:
https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html

单元格

这是在org.apache.poi.ss.usermodel包的接口。它是代表了单元在电子表格中的行中的所有类的超接口。

单元格可以使用各种属性,例如空白,数字,日期,错误等单元格被添加到一个行之前应具有(基于0)自己的编号。

XSSFCell

这是在 org.apache.poi.xssf.usermodel 包的类。它实现了单元格界面。它是单元在电子表格中的行的一个高层次的表示。

现在我用Java实现读取excel表格

代码实现

public static void excel() throws Exception {
        //用流的方式先读取到你想要的excel的文件
        FileInputStream fis=new FileInputStream(new File(System.getProperty("user.dir")+"/src/excel.xls"));
        //解析excel
        POIFSFileSystem pSystem=new POIFSFileSystem(fis);
        //获取整个excel
        HSSFWorkbook hb=new HSSFWorkbook(pSystem);
        System.out.println(hb.getNumCellStyles());
        //获取第一个表单sheet
        HSSFSheet sheet=hb.getSheetAt(0);
        //获取第一行
    int firstrow=    sheet.getFirstRowNum();
    //获取最后一行
    int lastrow=    sheet.getLastRowNum();
    //循环行数依次获取列数
        for (int i = firstrow; i < lastrow+1; i++) {
            //获取哪一行i
            Row row=sheet.getRow(i);
            if (row!=null) {
                //获取这一行的第一列
            int firstcell=    row.getFirstCellNum();
            //获取这一行的最后一列
            int lastcell=    row.getLastCellNum();
            //创建一个集合,用处将每一行的每一列数据都存入集合中
            List<String> list=new ArrayList<>();
            for (int j = firstcell; j <lastcell; j++) {
                //获取第j列
                Cell cell=row.getCell(j);

                if (cell!=null) {
                    System.out.print(cell+"\t");
                    list.add(cell.toString());
                }
            }

            User user=new User();
            if (list.size()>0) {
                user.setUsername(list.get(1));
                user.setPassword(list.get(2));
            }
            BaseDAO dao=new BaseDAO();
            dao.save(user);
            System.out.println();
            }
        }
        fis.close();
    }
时间: 2024-10-12 23:24:02

Java读取excel表格的相关文章

java读取Excel表格中的数据

1.需求 用java代码读取hello.xls表格中的数据 2.hello.xls表格 3.java代码 package com.test; import java.io.File; import jxl.*; public class ReadExcel{ public static void main(String[] args) { int i; Sheet sheet; Workbook book; Cell cell1,cell2,cell3,cell4,cell5,cell6,cel

Java 读取excel表格文件

注意,本文使用的Jar包为jxl.jar,只能处理97-03版本xls格式的Excel jar包 maven依赖: <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.10</version> </dependency> jar包maven下载地址 使用 读取xls

java 读取excel(Map结构)xls

package com.sun.test; import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.HashMap;import java.util.Map; import org.apache.poi.hssf.usermodel.

Java读取excel数据保存入库

Java开发读取excel表格数据入库保存: List<Map<String, Object>> list = null; String filePath = filePaths + "/" + userID + "/" + accountID + "/" + busDate + "/"; String fileName = FileUpload.fileUp(file, filePath, "

Java读取excel文件,并存入MySQL数据库

2019,刚毕业入职,需要更新数据库某表内容,就写了个Java读取excel文件的代码,代码尚存问题较大,过往阅者看看即可,以此记录小白点滴 初学Java,还没学到io流,jdbc等操作 代码用到poi 一些jar,数据库jar import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.s

myBatis中的注解@Param、返回值为Map、JAVA读取Excel并解析文本、Class.getResource()和ClassLoader.getResource()

myBatis中的注解@Param:http://blog.csdn.net/gao36951/article/details/44258217:  http://www.cnblogs.com/thomas12112406/p/6217211.html. myBatis返回值为Map:http://blog.csdn.net/werewr342352321df/article/details/11892755. ====================== JAVA读取Excel并解析文本:h

Java编程:使用Java读取Excel文件内容

微软的ODBC驱动程序把工作表中的第一行作为列名(译者注:即字段名),工作表名作为数据库表名. 要通过JDBC访问工作表,我们还必须创建一个新的ODBC数据源,在Windows 2000系统上创建数据源的过程如下: 进入“控制面板” --> “管理工具” --> “数据源(ODBC)”,(译者注:打开后选择系统DSN),点击添加,在弹出窗口中选择“Driver do Microsoft Excel(*.xls)” 然后在数据源名处输入一个名字myexcel(译者注:相当于数据库名),然后点击“

Java -&gt; 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)

写入: private void insertFile(HttpServletRequest request, HttpServletResponse response) throws IOException { String path_member = request.getParameter("path_member"); List list = this.insert("f:/tmp001.xls", "gs_sale_members");

python读取excel表格生成sql语句 第一版

由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd linux下 sudo pip install xlrd 主要是适用于db2数据库 excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置.这里程序里有纠错,这个程序就是将sql语句拼好. __author__ = 'c3t' # coding:utf-8 import xlr