Java读取和写入Excel表格

Java读取和写入Excel表格

  • 1. 绪论
  • 2. JXL篇之程序范例
    • 2.1 JXL 创建低版本Excel文件
    • 2.2 JXL 读取低版本Excel文件
  • 3. POI篇之程序范例
    • 3.1 POI 创建低版本Excel文件
    • 3.2 POI 读取低版本Excel文件
    • 3.3 POI -XSSF创建高版本Excel文件
    • 3.4 POI -XSSF读取高版本Excel文件
  • 4. Maven
    • 4.1 低版本Excel创建与读取
    • 4.2 高版本Excel创建与读取
  • 5. 定制Excel导入模板
    • 5.1 概念

1. 绪论

  1. POI
    Apache POI是Apache软件基金会的开放源码函数库,POI提供API给Java程序对Microsoft Office格式档案读写功能。
    • HSSF 读写Microsoft Excel格式档案的功能。
    • XSSF 读写Microsoft Excel OOXML格式档案的管理。
    • HWPF 读写Microsoft PowerPoint格式档案的功能。
    • HSLF 读写Microsoft PowerPoint格式档案的功能。
    • HDGF 读写Microsoft Visio格式档案的功能。
  2. JXL
    开放源码文件。POI效率更高,操作相对复杂,JXL操作更简单。
  3. FASTEXCEL:纯Java开发的excel文件读写组件,支持Excel 97-2003文件格式;占用内存小。

2. JXL篇之程序范例

2.1 JXL 创建低版本Excel文件

  1. 程序代码
package excelJxl;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import java.io.File;

public class JxlExcelCre {
    /**
     * JXL 创建Excel文件
     * @author yangtingting
     * @date 2019/07/29
     */
    public static void main(String[] args) throws Exception{
        //创建Excel文件
        File file=new File("D:/jxl_test.xls");
        //创建文件
        file.createNewFile();
        //创建工作薄
        WritableWorkbook workbook = Workbook.createWorkbook(file);
        //创建sheet
        WritableSheet sheet=workbook.createSheet("sheet1",0);
        //添加数据
        String[] title={"id","name","sex"};
        Label label=null;
        for (int i=0;i
  1. 程序解读:
  • JXL的每个单元格都是通过Label写入的
  • JXL没有行的概念,通过“坐标”确定行和列

2.2 JXL 读取低版本Excel文件

  1. 程序代码
package excelJxl;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

import java.io.File;

public class JxlExcelRead {
    /**
     * JXL 读取Excel文件
     * @author yangtingting
     * @date 2019/07/29
     */
    public static void main(String[] args) throws Exception {
        //创建workbook
        Workbook workbook=Workbook.getWorkbook(new File("D:/jxl_test.xls"));
        //获取第一个工作表sheet
        Sheet sheet=workbook.getSheet(0);
        //获取数据
        for (int i=0;i

3. POI篇之程序范例

3.1 POI 创建低版本Excel文件

  1. 程序代码:
package excelPOI;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.FileOutputStream;

public class POIExcelCre {
    /**
     * POI 创建Excel文件
     * @author yangtingting
     * @date 2019/07/29
     */
    public static void main(String[] args) throws Exception {
        //创建Excel文件薄
        HSSFWorkbook workbook=new HSSFWorkbook();
        //创建工作表sheeet
        HSSFSheet sheet=workbook.createSheet();
        //创建第一行
        HSSFRow row=sheet.createRow(0);
        String[] title={"id","name","sex"};
        HSSFCell cell=null;
        for (int i=0;i

3.2 POI 读取低版本Excel文件

  1. 程序代码
package excelPOI;

import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.File;

public class POIExcelRead {
    /**
     * POI 读取Excel文件
     * @author yangtingting
     * @date 2019/07/29
     */
    public static void main(String[] args) throws Exception {
        //创建Excel,读取文件内容
        File file=new File("D:/poi_test.xls");
        HSSFWorkbook workbook=new HSSFWorkbook(FileUtils.openInputStream(file));
        //两种方式读取工作表
      //  HSSFSheet sheet=workbook.getSheet("Sheet0");
        HSSFSheet sheet=workbook.getSheetAt(0);
        //获取sheet中最后一行行号
        int lastRowNum=sheet.getLastRowNum();
        for (int i=0;i<=lastRowNum;i++){
            HSSFRow row=sheet.getRow(i);
            //获取当前行最后单元格列号
            int lastCellNum=row.getLastCellNum();
            for (int j=0;j

3.3 POI -XSSF创建高版本Excel文件

实际上,高版本的Excel文件只需更改响应jar包和个别方法名即可,直接附上代码吧。

package excelPOI;

import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


import java.io.File;
import java.io.FileOutputStream;

public class POIEcxelCreHigh {
    /**
     * POI 创建高版本Excel文件
     * @author yangtingting
     * @date 2019/07/29
     */
    public static void main(String[] args) throws Exception {
        //创建Excel文件薄
        XSSFWorkbook workbook=new XSSFWorkbook();
        //创建工作表sheeet
        Sheet sheet=workbook.createSheet();
        //创建第一行
        Row row=sheet.createRow(0);
        String[] title={"id","name","sex"};
        Cell cell=null;
        for (int i=0;i

3.4 POI -XSSF读取高版本Excel文件

代码:

package excelPOI;

import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;

public class POIExcelReadHigh {
    /**
     * POI 读取高版本Excel文件
     * @author yangtingting
     * @date 2019/07/29
     */
    public static void main(String[] args) throws Exception {
        //创建Excel,读取文件内容
        File file=new File("D:/poi_test.xlsx");
        XSSFWorkbook workbook=new XSSFWorkbook(FileUtils.openInputStream(file));
        //两种方式读取工作表
        // Sheet sheet=workbook.getSheet("Sheet0");
         Sheet sheet=workbook.getSheetAt(0);
        //获取sheet中最后一行行号
        int lastRowNum=sheet.getLastRowNum();
        for (int i=0;i<=lastRowNum;i++){
            Row row=sheet.getRow(i);
            //获取当前行最后单元格列号
            int lastCellNum=row.getLastCellNum();
            for (int j=0;j

注意

在读取某些Excel时报错Exception in thread “main” java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell。

处理

代码做出相应更改:

Java读取和写入Excel表格_第1张图片
代码如下:

for (int j=0;j

4. Maven

4.1 低版本Excel创建与读取


        
            
                net.sourceforge.jexcelapi
                jxl
                2.6.10
            
        
        
            org.apache.poi
            poi
            4.1.0
        
        
            commons-io
            commons-io
            2.6
        
    

4.2 高版本Excel创建与读取

需要 额外增加 依赖:

        
        
            dom4j
            dom4j
            1.6.1
        

        
       
            org.apache.poi
           poi-ooxml
           4.1.0
     

5. 定制Excel导入模板

5.1 概念

  1. 利用xml解析技术,确定模板样式
  • 确定模板列
  • 定义标题(合并单元格)
  • 定义列名
  • 定义数据区域单元格样式
  1. 这一部分的学习放在以后,先mark一下。视频链接

你可能感兴趣的:(Java学习)