java从Excle中读取数据集

 pom.xml:

        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.12</version>
        </dependency>
GetExcelInfo:
package  com.baosight.wisdomsf.lite.persist.system.syndata.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.WorkbookSettings;

/**
 * @Author: Yuan.
 **/
public class GetExcelInfo {

    public static void main(String[] args) {
        String filePath =  "C:\\Users\\Lenovo\\Desktop\\测试读取文件\\机构信息.xls";
        // 获取文件后缀名
        /*String fileTyle=filePath.substring(filePath.lastIndexOf("."),filePath.length());
        System.out.println(fileTyle);*/
        GetExcelInfo obj = new GetExcelInfo();
        // 这个是excel数据文件
        // 多表 - 方法
        /*List list = obj.readExcelMany(filePath);
        System.out.println(list);*/
        // 单表
        try {
            //得到所有数据
            List<List<String>> allData = readExcelSingle(filePath);
            System.out.println(allData);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    // 去读Excel的方法readExcel,该方法的入口参数为一个File对象
    public static List readExcelMany(String filePath) {
        File file = new File(filePath);
        List<String> resultList = new ArrayList<String>();
        try {
            // 创建输入流,读取Excel
            InputStream is = new FileInputStream(file.getAbsolutePath());

            // jxl提供的Workbook类
            //Workbook wb = Workbook.getWorkbook(is);//这样会出现乱码,改成下面的这种形式

            WorkbookSettings workbookSettings = new WorkbookSettings();
            workbookSettings.setEncoding("ISO-8859-1");
            Workbook wb= Workbook.getWorkbook(is,workbookSettings);

            // Excel的页签数量
            int sheet_size = wb.getNumberOfSheets();
            for (int index = 0; index < sheet_size; index++) {
                // 每个页签创建一个Sheet对象
                Sheet sheet = wb.getSheet(index);
                // sheet.getRows()返回该页的总行数
                for (int i = 0; i < sheet.getRows(); i++) {
                    // sheet.getColumns()返回该页的总列数
                    for (int j = 0; j < sheet.getColumns(); j++) {
                        String cellinfo = sheet.getCell(j, i).getContents();
                        //System.out.println(cellinfo);
                        resultList.add(cellinfo);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return resultList;
    }

    /**
     * 获取数据 - 读取单个sheet表
     * @param filePath
     * @return
     * @throws Exception
     */
    public static List<List<String>> readExcelSingle(String filePath) throws Exception {
        File file = new File(filePath);
        // 创建输入流,读取Excel
        InputStream is = new FileInputStream(file.getAbsolutePath());

        // jxl提供的Workbook类
        //Workbook wb = Workbook.getWorkbook(is);//这样会出现乱码,改成下面的这种形式

        WorkbookSettings workbookSettings = new WorkbookSettings();
        workbookSettings.setEncoding("ISO-8859-1");
        Workbook wb= Workbook.getWorkbook(is,workbookSettings);

        //只有一个sheet,直接处理,创建一个Sheet对象
        Sheet sheet = wb.getSheet(0);
        // 得到所有的行数
        int rows = sheet.getRows();
        // 所有的数据
        List<List<String>> allData = new ArrayList<List<String>>();
        // 越过第一行 它是列名称
        for (int j = 1; j < rows; j++) {
            List<String> oneData = new ArrayList<String>();
            // 得到每一行的单元格的数据
            Cell[] cells = sheet.getRow(j);
            for (int k = 0; k < cells.length; k++) {
                oneData.add(cells[k].getContents().trim());
            }
            // 存储每一条数据
            allData.add(oneData);
            // 打印出每一条数据
            //System.out.println(oneData);
        }
        return allData;
    }
}

 

posted @ 2021-11-08 13:58  Roc丶Y  阅读(64)  评论(0编辑  收藏  举报