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();

}

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章