趁着不忙,抽空写了个用poi操作excel导入导出的功能的小例子。不多说,直接上代码!
poi的操作类:
package com.bao.excelUtil;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
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.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
/**
* 操作excel的工具类
* @author Alex
*/
public class ExcelUtil {
/**
* 创建一个excel,返回一个excel对象
* @param sheetName
* @param orderList
* @return HSSFWorkbook
* @throws Exception
* @author Alex
*/
public static HSSFWorkbook createExcel(String filePath, String sheetName, List<String[]> orderList) throws Exception {
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
HSSFWorkbook wb = new HSSFWorkbook(); //创建一个工作区
try {
HSSFSheet sheet = wb.createSheet(sheetName); //创建一个sheet页
//创建第一行,如果有多个sheet页可以自己进行拓展
HSSFCell cell = null;
if (orderList != null) {
for (int i = 0; i < orderList.size(); i++) {
HSSFRow row = sheet.createRow(i);
String[] con = (String[]) orderList.get(i);
for (int j = 0; j < con.length; j++) {
if (i == 0) { //给第一行赋值,也就是标题行
cell = row.createCell(j);
cell.setCellValue(con[j]);
} else { //给其他行赋值,也就是数据
cell = row.createCell(j);
cell.setCellValue(con[j]);
}
}
}
CellStyle cellStyle2 = wb.createCellStyle(); //创建一个样式对象
cellStyle2.setAlignment(CellStyle.ALIGN_CENTER); //设置内容居中
}
wb.write(fileOutputStream);
} catch (Exception e) {
throw e;
}finally {
fileOutputStream.flush();
fileOutputStream.close();
}
return wb;
}
/**
* 读取excel数据的方法
* @param file
* @return List<HashMap>
* @throws Exception
* @author Alex
*/
public static List<String[]> getExcel(String filePath) throws Exception {
List<String[]> dataList = new ArrayList<String[]>();
File file = new File(filePath);
FileInputStream fs = new FileInputStream(file);
HSSFWorkbook wb = new HSSFWorkbook(fs); // 获得工作
HSSFSheet sheet = wb.getSheetAt(0); // 拿到第一个sheet页
Iterator<Row> rows = sheet.rowIterator(); // 拿到第一行
while (rows.hasNext()) { // 如果有值
HSSFRow row = (HSSFRow) rows.next(); // 拿到当前行
if(row.getRowNum() != 0) { //不读取标题(可以根据自己需求进行修改)
String[] data = new String[row.getLastCellNum()];
Iterator<Cell> cells = row.cellIterator(); // 拿到当前行所有列的集合
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next(); // 拿到列值
String cellValue = ""; // 存放单元格的值
switch (cell.getCellType()) { // 判断单元格的类型,取出单元格的值
case HSSFCell.CELL_TYPE_NUMERIC:
// 处理数字类型 去掉科学计数法格式
double strCell = cell.getNumericCellValue();
DecimalFormat formatCell = (DecimalFormat) NumberFormat.getPercentInstance();
formatCell.applyPattern("0");
String value = formatCell.format(strCell);
if (Double.parseDouble(value) != strCell) {
formatCell.applyPattern(Double.toString(strCell));
value = formatCell.format(strCell);
}
cellValue = value;
break;
case HSSFCell.CELL_TYPE_STRING:
cellValue = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
cellValue = cell.getCellFormula();
break;
default:
break;
}
data[cell.getColumnIndex()] = cellValue;
}
dataList.add(data);
}
}
return dataList;
}
}
测试poi的实现类:
package com.bao.test;
import java.util.ArrayList;
import java.util.List;
import com.bao.excelUtil.ExcelUtil;
public class testMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//模拟数据
String filePath = "file/testDate.xls";
String sheetName = "测试";
List<String[]> testList = new ArrayList<String[]>();
String[] title = {"姓名","年龄","性别"};
String[] data1 = {"张三","25","男"};
String[] data2 = {"赵四","22","男"};
String[] data3 = {"王武","12","男"};
testList.add(title);
testList.add(data1);
testList.add(data2);
testList.add(data3);
try {
//导出excel
//ExcelUtil.createExcel(filePath, sheetName, testList);
//读取excel
List<String[]> result = ExcelUtil.getExcel(filePath);
for(String[] data : result){
for(int i = 0;i<data.length ;i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
用的jar包是poi-3.7-20101029.jar.如果大家想了解更多,直接下载api进行学习!写的比较简单,希望大家多多指点!
分享到:
相关推荐
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...
Java中的Apache POI库是处理...以上是Java POI操作Excel的基本概念和关键点,理解并熟练运用这些知识点,你就可以在项目中高效地进行批量导入导出操作了。记住,持续学习和适应新的库版本是保持技术领先的关键。
综上所述,"Springboot+Poi实现Excel的导入导出"是一个实用的功能,它结合了Spring Boot的便捷性、MyBatis的数据库操作以及POI的Excel处理能力,为企业级应用提供了高效的数据交换手段。在实际开发中,还需要根据...
本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,增强了用户体验。 首先,Apache POI的核心类HSSFWorkbook和XSSFWorkbook分别用于处理老版本的.xls和新版本的.xlsx文件。在导入...
Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出...
在本文中,我们将深入探讨如何使用Apache POI库实现Excel的导入和导出功能,这对于处理大量数据和自动化办公流程非常有用。 首先,让我们了解一下Apache POI的核心组件HSSF(Horrible Spreadsheet Format)和XSSF...
在提供的“java-excel导入导出”压缩包中,可能包含了示例代码、说明文档以及测试数据,可以帮助初学者快速理解和使用Java POI进行Excel操作。通过学习和实践这些示例,你可以掌握Java POI库的基本用法,并能灵活...
综上所述,Apache POI为Java开发者提供了强大的Excel操作能力,使得在Web项目中实现Excel的导入与导出变得简单易行。通过合理地运用这些API,你可以为用户提供便捷的数据交换服务。在实际开发中,结合具体的项目需求...
该文件中包含了所有java项目中针对excel导入导出所需的jar包集合。 -------------------------------------- 将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用...
在SpringBoot应用中,使用Apache POI库可以方便地实现Excel的导入与导出功能。Apache POI是一个流行的API,它允许程序员创建、修改和显示Microsoft Office格式的文件,其中包括Excel(.xls和.xlsx)文件。在这个场景...
在“poi操作excel表格导入和导出”这个主题中,我们将深入探讨如何利用Apache POI进行Excel数据的处理,包括导入和导出。 一、Apache POI简介 Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式的...
通过以上步骤,我们就可以在SpringBoot应用中实现基于MyBatis和Apache POI的Excel导入导出功能。这在数据分析、报表生成、数据交换等场景中非常实用,大大提高了工作效率。同时,这个过程也涉及到文件I/O操作、数据...
在"基于poi的excel导入导出封装"这个主题中,我们将深入探讨如何使用Apache POI库来实现Excel文件的导入和导出功能。 **一、Apache POI基本概念** 1. **工作簿(Workbook)**: 在Apache POI中,工作簿是Excel文件...
"Poi操作excel批量导入导出项目需要的jar包"表明这个压缩包`lib`可能包含了Apache POI库和其他必要的依赖。通常,这可能包括以下jar文件: 1. `poi-ooxml-schemas.jar`: 包含了Microsoft Office Open XML (OOXML) ...
以上就是关于使用JXL和Apache POI实现Excel导入导出的基本知识。根据实际需求,你可以结合这两个库的功能,灵活地处理各种Excel文件操作。在实际项目中,通常会根据性能、功能需求以及文件兼容性等因素选择适合的库...
在Java编程环境中,Apache POI库是一个非常实用的工具,它允许开发者读取、创建、修改Microsoft Office格式的文件,包括Excel...通过熟练掌握Apache POI,开发者可以方便地实现Excel的导入导出功能,提高工作效率。
二、Excel导入 1. 创建Workbook对象:首先,我们需要创建一个Workbook对象来表示Excel文件。对于.xls文件,使用HSSFWorkbook;对于.xlsx文件,使用XSSFWorkbook。 ```java // .xls 文件 FileInputStream fis = new ...