日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java通用解析excel_java读取简单excel通用工具类

發布時間:2024/9/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java通用解析excel_java读取简单excel通用工具类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例為大家分享了java讀取簡單excel通用工具類的具體代碼,供大家參考,具體內容如下

讀取excel通用工具類

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

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.poi.ss.usermodel.CellType;

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;

/**

* 讀取Excel通用工具類

* @author zql

*/

public class ReadExcel {

/**

* 讀取Excel

*

* @param filepath 文件路徑

* @param filename 文件名,包括擴展名

* @param startrow 開始行號,索引從0開始

* @param startcol 開始列號,索引從0開始

* @param sheetnum 工作簿,索引從0開始

* @return

*/

public List> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {

List> varList = new ArrayList>();

String suffix = filename.substring(filename.lastIndexOf(".") + 1);

if ("xls".equals(suffix)) {

varList = readExcel2003(filepath, filename, startrow, startcol, sheetnum);

} else if ("xlsx".equals(suffix)) {

varList = readExcel2007(filepath, filename, startrow, startcol, sheetnum);

} else {

System.out.println("Only excel files with XLS or XLSX suffixes are allowed to be read!");

return null;

}

return varList;

}

/**

* 讀取2003Excel

*

* @param filepath 文件路徑

* @param filename 文件名,包括擴展名

* @param startrow 開始行號,索引從0開始

* @param startcol 開始列號,索引從0開始

* @param sheetnum 工作簿,索引從0開始

* @return

*/

public List> readExcel2003(String filepath, String filename, int startrow, int startcol, int sheetnum) {

List> varList = new ArrayList>();

try {

File target = new File(filepath, filename);

FileInputStream fis = new FileInputStream(target);

HSSFWorkbook wb = new HSSFWorkbook(fis);

fis.close();

// sheet 從0開始

HSSFSheet sheet = wb.getSheetAt(sheetnum);

// 取得最后一行的行號

int rowNum = sheet.getLastRowNum() + 1;

HSSFRow rowTitle = sheet.getRow(0);

// 標題行的最后一個單元格位置

int cellTitleNum = rowTitle.getLastCellNum();

String[] title = new String[cellTitleNum];

for (int i = startcol; i < cellTitleNum; i++) {

HSSFCell cell = rowTitle.getCell(Short.parseShort(i + ""));

if (cell != null) {

cell.setCellType(CellType.STRING);

title[i] = cell.getStringCellValue();

} else {

title[i] = "";

}

}

// 行循環開始

for (int i = startrow + 1; i < rowNum; i++) {

Map varpd = new HashMap();

// 行

HSSFRow row = sheet.getRow(i);

// 列循環開始

for (int j = startcol; j < cellTitleNum; j++) {

HSSFCell cell = row.getCell(Short.parseShort(j + ""));

String cellValue = "";

if (cell != null) {

// 把類型先設置為字符串類型

cell.setCellType(CellType.STRING);

cellValue = cell.getStringCellValue();

}

varpd.put(title[j], cellValue);

}

varList.add(varpd);

}

wb.close();

} catch (Exception e) {

System.out.println(e);

}

return varList;

}

/**

* 讀取2007Excel

*

* @param filepath 文件路徑

* @param filename 文件名,包括擴展名

* @param startrow 開始行號,索引從0開始

* @param startcol 開始列號,索引從0開始

* @param sheetnum 工作簿,索引從0開始

* @return

*/

public List> readExcel2007(String filepath, String filename, int startrow, int startcol, int sheetnum) {

List> varList = new ArrayList>();

try {

File target = new File(filepath, filename);

InputStream ins = new FileInputStream(target);

XSSFWorkbook wb = new XSSFWorkbook(ins);

ins.close();

// 得到Excel工作表對象

XSSFSheet sheet = wb.getSheetAt(sheetnum);

// 取得最后一行的行號

int rowNum = sheet.getLastRowNum() + 1;

XSSFRow rowTitle = sheet.getRow(0);

int cellTitleNum = rowTitle.getLastCellNum();

String[] title = new String[cellTitleNum];

for (int i = startcol; i < cellTitleNum; i++) {

XSSFCell cell = rowTitle.getCell(Short.parseShort(i + ""));

if (cell != null) {

// 把類型先設置為字符串類型

cell.setCellType(CellType.STRING);

title[i] = cell.getStringCellValue();

} else {

title[i] = "";

}

}

// 行循環開始

for (int i = startrow + 1; i < rowNum; i++) {

Map varpd = new HashMap();

// 得到Excel工作表的行

XSSFRow row = sheet.getRow(i);

// 列循環開始

for (int j = startcol; j < cellTitleNum; j++) {

// 得到Excel工作表指定行的單元格

XSSFCell cell = row.getCell(j);

String cellValue = "";

if (cell != null) {

// 把類型先設置為字符串類型

cell.setCellType(CellType.STRING);

cellValue = cell.getStringCellValue();

}

varpd.put(title[j], cellValue);

}

varList.add(varpd);

}

wb.close();

} catch (Exception e) {

System.out.println(e);

}

return varList;

}

}

讀取excel通用工具示例測試類

import java.util.List;

import java.util.Map;

/**

* @author zql

*

*/

public class ReadExcelTest {

public static void main(String[] args) throws Exception {

ReadExcel r = new ReadExcel();

List> list = r.readExcel("e:\excel", "測試表格.xls", 0, 0, 0);

if (list != null) {

for (int i = 0; i < list.size(); i++) {

Map m = list.get(i);

m.forEach((key, value) -> {

System.out.println(key + ":" + value);

});

System.out.println();

}

}

List> lists = r.readExcel("e:\excel", "測試表格.xlsx", 0, 0, 0);

if (lists != null) {

for (int i = 0; i < lists.size(); i++) {

Map m = lists.get(i);

m.forEach((key, value) -> {

System.out.println(key + ":" + value);

});

System.out.println();

}

}

}

}

普通項目需要引入的包

poi-4.0.1.jar

poi-ooxml-4.0.1.jar

poi-ooxml-schemas-4.0.1.jar

commons-codec-1.11.jar

commons-collections4-4.3.jar

commons-math3-3.6.1.jar

xmlbeans-3.0.2.jar

commons-compress-1.18.jar

curvesapi-1.06.jar

maven項目依賴

org.apache.poi

poi

4.0.1

org.apache.poi

poi-ooxml

4.0.1

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持云海天教程。

總結

以上是生活随笔為你收集整理的java通用解析excel_java读取简单excel通用工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。