基于Java編寫簡單的Excel工具類
更新時間:2024年02月28日 16:24:22 作者:老李筆記
這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫簡單的Excel工具類,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考下
Excel工具類
MyExcelUtil.java
package com.asia.common;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class MyExcelUtil {
// 簡單測試
public static void main(String[] args) {
List<List<String>> lists = readExcel("D:\\hao\\工作簿1.xlsx", 0);
List<List<String>> dataList = new ArrayList<>();
for (int i = 0; i < lists.size(); i++) {
dataList.add(lists.get(i));
System.out.println(lists.get(i));
}
}
public static List<List<String>> readExcel(String path, int sheetIndex) {
List<List<String>> excelDataList = new ArrayList<List<String>>();
try {
InputStream inputStream = new FileInputStream(path);
File file;
// 通過文件流工廠方式來處理,用來防止NotOLE2FileException
Workbook workbook = WorkbookFactory.create(inputStream);
if (inputStream == null || workbook == null) {
return excelDataList;
}
// 讀取Sheet
Sheet sheet = workbook.getSheetAt(sheetIndex);
if (sheet == null) {
return excelDataList;
}
// 循環(huán)處理每一行,會讀取到第一行
int rows = sheet.getPhysicalNumberOfRows();
int minCells = 0;
int maxCells = 0;
// 獲取最小列數(shù)和最大列數(shù),以第一行為準(zhǔn)
if (rows >= 1) {
minCells = sheet.getRow(0).getFirstCellNum();
maxCells = sheet.getRow(0).getLastCellNum();
}
for (int i = 0; i < rows; i++) {
// 得到當(dāng)前行
Row row = sheet.getRow(i);
if(null==row) {
break;
}
List<String> rowList = new ArrayList<String>();
for (int j = minCells; j < maxCells; j++) {
// 每一個單元格
Cell cell = row.getCell(j);
if (cell == null) {
rowList.add("");
} else {
rowList.add(cell.toString());
}
}
excelDataList.add(rowList);
}
inputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return excelDataList;
}
public static boolean writeExcel(List<String> title, List<List<String>> data, String sheetName, String filePath){
if (filePath == null || !filePath.contains(".")) {
return false;
}
String suffix = filePath.substring(filePath.lastIndexOf(".") + 1);
Workbook workbook = null;
switch (suffix) {
case "xls":
workbook = new HSSFWorkbook();
break;
case "xlsx":
workbook = new XSSFWorkbook();
break;
default:
return false;
}
// 在workbook中創(chuàng)建一個sheet對應(yīng)excel中的sheet
Sheet sheet = workbook.createSheet(sheetName);
// 在sheet表中添加表頭第0行,老版本的poi對sheet的行列有限制
Row row = sheet.createRow(0);
// 創(chuàng)建單元格,設(shè)置表頭
int titleSize = title.size();
for (int i = 0; i < titleSize; i++) {
Cell cell = row.createCell(i);
cell.setCellValue(title.get(i));
}
// 寫入數(shù)據(jù)
int dataSize = data.size();
for (int i = 0; i < dataSize; i++) {
Row row1 = sheet.createRow(i + 1);
List<String> rowData = data.get(i);
// 創(chuàng)建單元格設(shè)值
for (int i1 = 0; i1 < rowData.size(); i1++) {
row1.createCell(i1).setCellValue(rowData.get(i1));
}
}
File file = new File(filePath);
if (file.exists()) {
file.delete();
}
try {
file.createNewFile();
workbook.write(new FileOutputStream(file));
workbook.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}
pom.xml
<dependencies> <!--poi相關(guān)依賴--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.1</version> </dependency> <!--poi相關(guān)依賴end--> </dependencies>
到此這篇關(guān)于基于Java編寫簡單的Excel工具類的文章就介紹到這了,更多相關(guān)Java Excel工具類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
線程池運用不當(dāng)引發(fā)的一次線上事故解決記錄分析
遇到了一個比較典型的線上問題,剛好和線程池有關(guān),另外涉及到死鎖、jstack命令的使用、JDK不同線程池的適合場景等知識點,同時整個調(diào)查思路可以借鑒,特此記錄和分享一下2024-01-01
Spring中FactoryBean的高級用法實戰(zhàn)教程
FactoryBean是Spring框架的高級特性,允許自定義對象的創(chuàng)建過程,適用于復(fù)雜初始化邏輯,本文給大家介紹Spring中FactoryBean的高級用法實戰(zhàn),感興趣的朋友跟隨小編一起看看吧2024-09-09
通過Maven進行jedis連接redis的實現(xiàn)
這篇文章主要介紹了通過Maven進行jedis連接redis的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Java+MyBatis+MySQL開發(fā)環(huán)境搭建流程詳解
Java的MyBatis框架提供了強大的數(shù)據(jù)庫操作支持,這里我們先在本地的開發(fā)環(huán)境中上手,來看一下Java+MyBatis+MySQL開發(fā)環(huán)境搭建流程詳2016-06-06
Java實現(xiàn)PDF轉(zhuǎn)為線性PDF詳解
線性化PDF文件是PDF文件的一種特殊格式,可以通過Internet更快地進行查看。本文將通過后端Java程序?qū)崿F(xiàn)將PDF文件轉(zhuǎn)為線性化PDF。感興趣的可以了解一下2021-12-12
Intellij IDEA下Spring Boot熱切換配置
這篇文章主要介紹了Intellij IDEA下Spring Boot熱切換配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08

