Java实现导入导出Excel文件的方法

目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel

直接上代码:

一,POI

POI是apache的项目,可对微软的Word,Excel,Ppt进行操作,包括office2003和2007,Excl2003和2007。poi现在一直有更新。所以现在主流使用POI。

xls:

pom:

org.apache.poi

poi-ooxml

3.9

commons-io

commons-io

2.2

导出:

public class PoiCreateExcel {

public static void main(String[] args) {

// 创建表头

String[] title = {"id","name","sex"};

//创建Excel工作薄

HSSFWorkbook workbook = new HSSFWorkbook();

//创建一个工作表sheet

HSSFSheet sheet = workbook.createSheet();

//创建第一行

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;

// 插入第一行

for (int i = 0; i < title.length; i++) {

cell = row.createCell(i);

cell.setCellValue(title[i]);

}

// 追加数据

for (int i = 1; i < 10; i++) {// 这里的int 起始是1 也就是第二行开始

HSSFRow nexTrow = sheet.createRow(i);

HSSFCell cell2 = nexTrow.createCell(0);

cell2.setCellValue("a"+i);

cell2 = nexTrow.createCell(1);

cell2.setCellValue("user");

cell2 = nexTrow.createCell(2);

cell2.setCellValue("男");

}

// 创建一个文件

File file = new File("d:/poi.xls");

try {

file.createNewFile();

// 将内容存盘

FileOutputStream stream = FileUtils.openOutputStream(file);

workbook.write(stream);

stream.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

导入:

public class PoiReadExcel {

public static void main(String[] args) {

// 引入需要解析的文件

File file = new File("d:/poi.xls");

try {

// 创建Excel 读取文件内容

HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(file));

/**

* 第一种方式读取Sheet页

*/

// HSSFSheet sheet = workbook.getSheet("Sheet0");

/**

* 第二种方式读取Sheet页

*/

HSSFSheet sheet = workbook.getSheetAt(0);

int firstRowNum = 0;// 起始行第0行

int lasrRowNum = sheet.getLastRowNum();// 一直读到最后一行

for (int i = 0; i < lasrRowNum; i++) {

HSSFRow row = sheet.getRow(i);

// 获取当前最后单元格列号

int lastCellNum = row.getLastCellNum();

for (int j = 0; j < lastCellNum; j++) {

HSSFCell cell = row.getCell(j);

String value = cell.getStringCellValue();// 注意! 如果Excel 里面的值是String 那么getStringCellValue 如果是其他类型 则需要修改

System.out.print(value + " ");

}

System.out.println();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

xlsx:

pom:

org.apache.poi

poi-examples

3.9

org.apache.poi

poi-excelant

3.9

org.apache.poi

poi-ooxml

3.9

org.apache.poi

poi-ooxml-schemas

3.9

org.apache.poi

poi-scratchpad

3.9

导出:

public class PoiCreateExcel {

public static void main(String[] args) {

// 创建表头

String[] title = {"id","name","sex"};

//创建Excel工作薄

XSSFWorkbook workbook = new XSSFWorkbook();

//创建一个工作表shheet

Sheet sheet = workbook.createSheet();

//创建第一行

Row row = sheet.createRow(0);

Cell cell = null;

// 插入第一行

for (int i = 0; i < title.length; i++) {

cell = row.createCell(i);

cell.setCellValue(title[i]);

}

// 追加数据

for (int i = 1; i < 10; i++) {// 这里的int 起始是1 也就是第二行开始

Row nexTrow = sheet.createRow(i);

Cell cell2 = nexTrow.createCell(0);

cell2.setCellValue("a"+i);

cell2 = nexTrow.createCell(1);

cell2.setCellValue("user");

cell2 = nexTrow.createCell(2);

cell2.setCellValue("男");

}

// 创建一个文件

File file = new File("d:/poi.xlsx");// 这里可以修改成高版本的

try {

file.createNewFile();

// 将内容内盘外汇赠金活动

 

FileOutputStream stream = FileUtils.openOutputStream(file);

workbook.write(stream);

stream.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

导入:

public class PoiReadExcel {

public List readExcels(InputStream is)throws Exception{

List xlsxList = new ArrayList();

try {

if(is ==null){

throw new IOException("文件不正确!");

}

Workbook workbook = WorkbookFactory.create(is);

FormulaEvaluator fe = workbook.getCreationHelper().createFormulaEvaluator();

//获取第一张表

Sheet sheet = workbook.getSheetAt(0);

if(sheet == null){

throw new IOException("传入的excel的第一张表为空!");

}

for(int rowNum = 0;rowNum <= sheet.getLastRowNum(); rowNum++){

Row row = sheet.getRow(rowNum);

if(row != null){

//获得当前行的开始列

int firstCellNum = row.getFirstCellNum();

//获得当前行的列数

int lastCellNum = row.getPhysicalNumberOfCells();

String result = "";

//循环当前行

for(int cellNum = firstCellNum; cellNum < lastCellNum;cellNum++){

Cell cell = row.getCell(cellNum);

double value = 0;

String valueString = cell.getStringCellValue();

if(null!=fe.evaluate(cell)){

value = fe.evaluate(cell).getNumberValue();

}

//result = result + cellNum + ":"+value + "----";

result = result + cellNum + ":"+valueString + "----";

}

System.out.println(result + " ");

}

}

is.close();

} catch (FileNotFoundException e) {

throw new Exception("文件不正确!");

}

return xlsxList;

}

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

InputStream is = new FileInputStream("d:/poi.xlsx");

PoiReadExcel re = new PoiReadExcel();

re.readExcels(is);

}

}

二,JXL

JXL只能对Excel进行操作,属于比较老的框架,它只支持到Excel 95-2000的版本。现在已经停止更新和维护。

pom:

net.sourceforge.jexcelapi

jxl

2.6.10

导出:

public class JxlCreateExcel {

public static void main(String[] args) {

// 首先设置表格第一行 表格头名称 也就是列名

String [] title = {"id","name","sex"};

// 创建Excel文件 存入路径

File file = new File("d:/jxl.xls");

try {

file.createNewFile();

// 创建工作薄

WritableWorkbook workbook = Workbook.createWorkbook(file);

// 创建sheet

WritableSheet sheet = workbook.createSheet("sheet1",0);

// 添加数据

Label label = null;

// 第一行设置列名

for (int i = 0; i < title.length; i++) {

label = new Label(i,0,title[i]);

sheet.addCell(label);

}

// 追加数据 从第二行开始 i从1开始

for (int i = 1; i < 9; i++) {

label = new Label(0,i,"id:"+i);

sheet.addCell(label);

label = new Label(1,i,"user");

sheet.addCell(label);

label = new Label(2,i,"男");

sheet.addCell(label);

}

// 写入 并在最后关闭流

workbook.write();

workbook.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

导入:

public class JxlReadExcel {

public static void main(String[] args) {

try {

// 创建 Workbook

Workbook workbook = Workbook.getWorkbook(new File("d:/jxl.xls"));

// 获取工作表sheet

Sheet sheet = workbook.getSheet(0);

// 获取数据

for (int i = 0; i < sheet.getRows(); i++) {// 获取行

for (int j = 0; j < sheet.getColumns(); j++) {// 获取列

Cell cell = sheet.getCell(j,i);

System.out.print(cell.getContents() + " ");// 得到单元格的内容

}

System.out.println();

}

workbook.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

上一篇:xlrd xlwt xlutils


下一篇:接口中导入excel测试数据(详)