Excel操作类
-
package excelTest;
-
-
import java.io.File;
-
import java.io.FileInputStream;
-
import java.io.FileNotFoundException;
-
import java.io.FileOutputStream;
-
import java.io.IOException;
-
import java.util.List;
-
import java.util.Map;
-
-
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;
-
-
public class ExcelOperation {
-
private static XSSFWorkbook workbook = null;
-
-
/**
-
*判断文件是否存在.
- */
-
public static boolean fileExist(String fileDir) {
-
boolean flag = false;
-
File file = new File(fileDir);
-
flag = file.exists();
-
return flag;
-
}
-
-
/**
-
*判断文件的sheet是否存在.
- */
-
public static boolean sheetExist(String fileDir, String sheetName) throws Exception {
-
boolean flag = false;
-
File file = new File(fileDir);
-
if (file.exists()) {
-
try {
-
workbook = new XSSFWorkbook(new FileInputStream(file));
-
XSSFSheet sheet = workbook.getSheet(sheetName);
-
if (sheet != null)
-
flag = true;
-
} catch (Exception e) {
-
throw e;
-
}
-
} else {
-
flag = false;
-
}
-
return flag;
-
}
-
-
/**
-
*创建新excel
- */
-
public static void createExcel(String fileDir, String sheetName, String titleRow[]) throws Exception {
-
workbook = new XSSFWorkbook();
-
FileOutputStream out = null;
-
try {
-
XSSFRow row = workbook.createSheet(sheetName).createRow(0);
-
for (int i = 0; i < titleRow.length; i++) {
-
XSSFCell cell = row.createCell(i);
-
cell.setCellValue(titleRow[i]);
-
}
-
out = new FileOutputStream(fileDir);
-
workbook.write(out);
-
} catch (Exception e) {
-
throw e;
-
} finally {
-
try {
-
if (out != null) {
-
out.close();
-
}
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
-
/**
-
*往excel中写入mapList.size()行数据
- */
-
public static void writeToExcelRow(String fileDir, String sheetName, List<Map<String, String>> mapList, int rowId)
-
throws Exception {
-
File file = new File(fileDir);
-
try {
-
workbook = new XSSFWorkbook(new FileInputStream(file));
-
} catch (FileNotFoundException e) {
-
e.printStackTrace();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
FileOutputStream out = null;
-
XSSFSheet sheet = workbook.getSheet(sheetName);
-
// 获取表格的总行数
-
// introwCount = sheet.getLastRowNum() + 1; // 需要加一
-
// 获取表头的列数
-
int columnCount = sheet.getRow(0).getLastCellNum();
-
try {
-
XSSFRow titleRow = sheet.getRow(0);
-
if (titleRow != null) {
-
for (Map<String, String> map : mapList) {
-
XSSFRow newRow = sheet.createRow(rowId++);
-
for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) {
-
String mapKey = titleRow.getCell(columnIndex).toString().trim();
-
XSSFCell cell = newRow.createCell(columnIndex);
-
cell.setCellValue(map.get(mapKey) == null ? null : map.get(mapKey).toString());
-
}
-
}
-
}
-
-
out = new FileOutputStream(fileDir);
-
workbook.write(out);
-
} catch (Exception e) {
-
throw e;
-
} finally {
-
try {
-
if (out != null) {
-
out.close();
-
}
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
-
/**
-
*往excel中写入一格数据
- */
-
public static void writeToExcelCell(String fileDir, String sheetName, String value, int rowId, int columnId)
-
throws Exception {
-
File file = new File(fileDir);
-
try {
-
workbook = new XSSFWorkbook(new FileInputStream(file));
-
} catch (FileNotFoundException e) {
-
e.printStackTrace();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
FileOutputStream out = null;
-
XSSFSheet sheet = workbook.getSheet(sheetName);
-
// 获取表格的总行数
-
// introwCount = sheet.getLastRowNum() + 1; // 需要加一
-
// 获取表头的列数
-
// intcolumnCount = sheet.getRow(0).getLastCellNum();
-
try {
-
XSSFRow row = sheet.getRow(rowId);
-
if (row != null) {
-
XSSFCell cell = row.getCell(columnId);
-
if (cell != null) {
-
cell.setCellValue(value == null ? null : value);
-
} else {
-
XSSFCell newCell = row.createCell(columnId);
-
newCell.setCellValue(value == null ? null : value);
-
}
-
}
-
-
out = new FileOutputStream(fileDir);
-
workbook.write(out);
-
} catch (Exception e) {
-
throw e;
-
} finally {
-
try {
-
if (out != null) {
-
out.close();
-
}
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
- }
|
测试
-
package excelTest;
-
-
import java.util.ArrayList;
-
import java.util.HashMap;
-
import java.util.List;
-
import java.util.Map;
-
-
public class ExcelTest {
-
-
public static void main(String[] args) throws Exception{
-
String excelFilePath="D:/test.xlsx";
-
String sheetName="sheet0";
-
String[] titleRow={"id", "name", "password"};
-
-
Map<String, String> map1=new HashMap<String, String>();
-
map1.put("id","1001");
-
map1.put("name", "anna");
-
map1.put("password", "ANNA");
-
Map<String, String> map2=new HashMap<String, String>();
-
map2.put("id","1002");
-
map2.put("name", "bob");
-
map2.put("password", "BOB");
-
List<Map<String, String>> mapList=new ArrayList<Map<String, String>>();
-
mapList.add(map1);
-
mapList.add(map2);
-
-
System.out.println(ExcelOperation.fileExist(excelFilePath));
-
ExcelOperation.createExcel(excelFilePath, sheetName, titleRow);
-
System.out.println(ExcelOperation.fileExist(excelFilePath));
-
ExcelOperation.writeToExcelRow(excelFilePath, sheetName, mapList, 1);//从表的第二行开始写
-
}
-
- }
|
结果

jar包
需要的jar包

jar包下载:http://poi.apache.org
ps:本文处理的是.xlsx文件,把代码中XSSF全部改成HSSF即可访问.xls文件。xls文件是07版之前的,一张表最多只能存65536行数据。xlsx是07版之后的Excel,可以存很多很多很多…