java读取excel文件

java读取excel文件

文章目录

  • java读取excel文件
    • 一、poi操作
    • 二、使用jxl库
      • 遇到的问题

一、poi操作

导入Maven依赖



    org.apache.poi
    poi
    3.16



    org.apache.poi
    poi-scratchpad
    3.16



    org.apache.poi
    poi-ooxml
    3.16



    org.apache.poi
    poi-ooxml-schemas
    3.16



    org.apache.poi
    poi-examples
    3.16



    org.apache.poi
    poi-excelant
    3.16

读取excel文件

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.IOException;

public class controller {
  
    public static void main(String[] args) {
        String path="D:/Desktop/test.xls";
        readExecl(path);
    }

    //读取excel表格中的数据,path代表excel路径
    public static void readExecl(String path) {
        try {
            //读取的时候可以使用流,也可以直接使用文件名
            XSSFWorkbook xwb = new XSSFWorkbook(path);
            //循环工作表sheet
            for (int numSheet = 0; numSheet < xwb.getNumberOfSheets(); numSheet++) {
                XSSFSheet xSheet = xwb.getSheetAt(numSheet);
                if (xSheet == null) {
                    continue;
                }
                //循环行row
                for (int numRow = 1; numRow <= xSheet.getLastRowNum(); numRow++) {
                    XSSFRow xRow = xSheet.getRow(numRow);
                    if (xRow == null) {
                        continue;
                    }
                    String userid =null;
                    String username = null;
                    //循环列cell
                    for (int numCell = 0; numCell <= xRow.getLastCellNum(); numCell++) {

                        XSSFCell xCell = xRow.getCell(numCell);
                        if (xCell == null) {
                            continue;
                        }
                        //输出值

                        System.out.println("excel表格中取出的数据" + getValue(xCell));
                        if(numCell==0){

                            userid = getValue(xCell);

                        }else if(numCell==1){
                            username = getValue(xCell);
                        }
                    }
                    User user= new User(userid,username);
                    System.out.println(user.toString());               

                }

            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 取出每列的值
     *
     * @param xCell 列
     * @return
     */
    private static String getValue(XSSFCell xCell) {
        if (xCell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {
            return String.valueOf(xCell.getBooleanCellValue());
        } else if (xCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
            return String.valueOf(xCell.getNumericCellValue());
        } else {
            return String.valueOf(xCell.getStringCellValue());
        }
    }
}

java读取excel文件_第1张图片

成功读取

二、使用jxl库

导入依赖

 
            net.sourceforge.jexcelapi
            jxl
            2.6.10
        

读取excel文件

public class ReadExcel01 {

    public static void main(String[] args) throws Exception {
        File xlsFile = new File("D:/Desktop/test.xls");

        // 工作表
        Workbook workbook = WorkbookFactory.create(xlsFile);

        // 表个数。
        int numberOfSheets = workbook.getNumberOfSheets();

        // 遍历表。
        for (int i = 0; i < numberOfSheets; i++) {
            Sheet sheet = workbook.getSheetAt(i);

            // 行数。
            int rowNumbers = sheet.getLastRowNum() + 1;

            // Excel第一行。
            Row temp = sheet.getRow(0);
            if (temp == null) {
                continue;
            }

            int cells = temp.getPhysicalNumberOfCells();

            // 读数据。
            for (int row = 0; row < rowNumbers; row++) {
                Row r = sheet.getRow(row);
                for (int col = 0; col < cells; col++) {
                    System.out.print(r.getCell(col).toString()+" ");
                }

                // 换行。
                System.out.println();
            }
        }
    }

}

java读取excel文件_第2张图片

成功读取

遇到的问题

java读取excel文件_第3张图片

jxl.read.biff.BiffException: Unable to recognize OLE stream
	at jxl.read.biff.CompoundFile.(CompoundFile.java:116)
	at jxl.read.biff.File.(File.java:127)
	at jxl.Workbook.getWorkbook(Workbook.java:268)
	at jxl.Workbook.getWorkbook(Workbook.java:253)
	at com.example.excel01.utils.GetExcelInfo.readExcel(GetExcelInfo.java:22)
	at com.example.excel01.utils.GetExcelInfo.main(GetExcelInfo.java:14)

jxl包只支持excel03版,文件可能是07版本

你可能感兴趣的:(web开发,java,apache,开发语言)