利用java程序将数据写入excel文件 以及 读取excel文件的数据
部分内容需要根据自己的实际情况来更改 只提供大致思路
package arithmetic;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
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;
/**
* java中对于excel的处理(通过poi的jar包来处理)
* 包括将数据导入到excel中 和 将数据从excel中读取出来
* @author liujd
*
*/
public class JavaExcelUtil {
//私有化构造 不让被实例化
private JavaExcelUtil() {
}
/**
* 生成Excel文件
* @param filePath 需要导出的文件路径
* @param titles 工作表的列名
* @param list 需要导入的每行数据集合[[],[],[],[]]这种形式
*/
@SuppressWarnings({ "rawtypes", "resource" })
public static void PoiExpExcel(String filePath , String[] titles , List list) {
//创建工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
//创建工作表
HSSFSheet sheet = workbook.createSheet();
//创建第一行(根据工作表的列名)
HSSFRow row = sheet.createRow(0);
HSSFCell cell = null;
//插入第一行 也就是列名
for(int i = 0 ;i<titles.length;i++) {
cell = row.createCell(i);
cell.setCellValue(titles[i]);
}
//追加数据
for(int i = 1 ; i<= list.size();i++) {
HSSFRow nextRow = sheet.createRow(i);
for(int j = 0 ;j<titles.length;j++) {
HSSFCell cell2 = nextRow.createCell(j);
cell2.setCellValue(j);//此处需要根据具体程序更改
}
}
//创建一个文件
File file = new File(filePath);
try {
file.createNewFile();
FileOutputStream stream = FileUtils.openOutputStream(file);
workbook.write(stream);
}catch(IOException e) {
e.printStackTrace();
}
}
/**
* 读取excel文件
* @param filePath 要读取的文件路径
* @return
*/
public static List PoiReadExcel(String filePath) {
File file = new File(filePath);
try {
FileInputStream stream = FileUtils.openInputStream(file);
HSSFWorkbook workbook = new HSSFWorkbook(stream);
//读取默认的第一个工作表
HSSFSheet sheet = workbook.getSheetAt(0);
int firstRowNum = 0;
//声明两个ArrayList 里层存每一行数据 外层存放所有行数据
List list = new ArrayList<>();
//获取sheet中最后一行行号
int lastRowNum = sheet.getLastRowNum();
for(int i = firstRowNum;i<=lastRowNum;i++) {
HSSFRow row = sheet.getRow(i);
//获取当前行最后单元格号
short lastCellNum = row.getLastCellNum();
List list2 = new ArrayList<>();
for(int j = 0;j<lastCellNum;j++) {
//获取这一行的单元格
HSSFCell cell = row.getCell(j);
String value = cell.getStringCellValue();
list2.add(value);
}
list.add(list2);
}
return list;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
/*String[] title = {"id","name","sex"};
ArrayList list = new ArrayList<>();
ArrayList list2 = new ArrayList<>();
list2.add("111");
list2.add("222");
list2.add("333");
list.add(list2);
PoiExpExcel("D:/test/demo2.xls",title, list);*/
List poiReadExcel = PoiReadExcel("D:/test/demo1.xls");
System.out.println(poiReadExcel);
}
}