POI 4.0之excel导入导出
所需jar包:
poi-4.0.0.jar
poi-ooxml-4.0.0.jar
poi-ooxml-schemas-4.0.0.jar
xmlbeans-3.0.1.jar (没导入此包会包java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject)
这是所需的四个jar包,但我本地测试时会出现少其他包情况如:
(.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile)这个是少了commons-compress-1.18.jar
(.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap)这个是少了commons-collections4-4.1.jar
所有包如下:
具体的读写方法如下:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
public class TestReadAndWrite {
public static void main(String[] args) throws IOException {
String path = "d:/";
String fileName = "abc";
String fileType = "xlsx";
TestReadAndWrite testReadAndWrite = new TestReadAndWrite();
testReadAndWrite.writer(path, fileName, fileType);
testReadAndWrite.read(path, fileName, fileType);
}
public void writer(String path, String fileName,String fileType) throws IOException {
//创建工作文档对象
Workbook wb = null;
if (fileType.equals("xls")) {
wb = new HSSFWorkbook();
}
else if(fileType.equals("xlsx"))
{
wb = new XSSFWorkbook();
}
else
{
System.out.println("您的文档格式不正确!");
}
//创建sheet对象
Sheet sheet1 = (Sheet) wb.createSheet("sheet1");
//循环写入行数据
for (int i = 0; i < 5; i++) {
Row row = (Row) sheet1.createRow(i);
//循环写入列数据
for (int j = 0; j < 8; j++) {
Cell cell = row.createCell(j);
cell.setCellValue("测试"+j);
}
}
//创建文件流
OutputStream stream = new FileOutputStream(path+fileName+"."+fileType);
//写入数据
wb.write(stream);
//关闭文件流
stream.close();
}
public void read(String path, String fileName,String fileType) throws IOException
{
//获得文件后缀名
// String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
InputStream stream = new FileInputStream(path+fileName+"."+fileType);
Workbook wb = null;
if (fileType.equals("xls")) {
wb = new HSSFWorkbook(stream);
}
else if (fileType.equals("xlsx")) {
wb = new XSSFWorkbook(stream);
}
else {
System.out.println("您输入的excel格式不正确");
}
Sheet sheet1 = wb.getSheetAt(0);
for (Row row : sheet1) {
for (Cell cell : row) {
switch (cell.getCellTypeEnum()){
case NUMERIC:
System.out.print(cell.getNumericCellValue()+" ");
break;
case STRING:
System.out.print(cell.getStringCellValue()+" ");
break;
}
}
System.out.println();
}
}
}