Java如何使用POI读写Excel呢?
下文笔者讲述POI操作excel的方法及示例分享
学习完本篇之后,你将掌握POI操作excel的方法,如下所示
学习完本篇之后,你将掌握POI操作excel的方法,如下所示
POI操作excel的实现思路
//1.引入相应依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> //2.引入HSSFWorkbook对象 //3.操作excel例:POI操作excel的示例
package com.java265;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.FillPatternType;
public class POItest {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("testsheet");//Sheet名称
for(int i=0;i<10;i++) {
HSSFRow row = sheet.createRow(i);//行
for(int j=0;j<10;j++) {
HSSFCell cell = row.createCell(j);//单元格
String val = createString(i,j);
setCellStyle(i,j,cell,wb);//设置样式
cell.setCellValue(val);//设置值
}
}
FileOutputStream fos = new FileOutputStream("D:\\Test\\exceltest.xls");//写入文件
wb.write(fos);
fos.flush();
fos.close();
System.out.println("xls finished.");
}
private static void setCellStyle(int i, int j, HSSFCell cell,HSSFWorkbook wb) {
HSSFFont font1 = wb.createFont();
HSSFCellStyle style1 = wb.createCellStyle();
font1.setColor(HSSFColorPredefined.BLUE.getIndex());//字体格式
font1.setBold(true);
style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);//单元格格式
style1.setFillForegroundColor(HSSFColorPredefined.LIGHT_YELLOW.getIndex());
style1.setFont(font1);
HSSFFont font2 = wb.createFont();
HSSFCellStyle style2 = wb.createCellStyle();
font2.setColor(HSSFColorPredefined.GREY_80_PERCENT.getIndex());
style2.setFont(font2);
if(0==i && 0==j) {
cell.setCellStyle(style1);
}else if(0==i) {
cell.setCellStyle(style1);
}else if(0==j){
cell.setCellStyle(style1);
}else if(j>i){
}else {
cell.setCellStyle(style2);
}
}
private static String createString(int i, int j) {
if(0==i && 0==j) {
return "九九乘法";
}else if(0==i) {
return j+"";
}else if(0==j){
return i+"";
}else if(j>i){
return "";
}else {
return j+"*"+i+"="+(i*j);
}
}
}
注意事项: 如果用POI读取Excel,抛出异常 The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF) 可使用XSSFWorkbook和XSSFSheet处理Excel maven导入 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.0</version> </dependency> POI提供了两套处理Excel的工具: 对2003版本的Excel使用HSSFWorkbook(xls后缀Excel导入poi) 对2007版本或更高版本Excel使用XSSFWorkbook(xlsx后缀Excel导入poi-ooxml)例:
@Test
public void test1() {
try (FileInputStream ins = new FileInputStream(new File("test.xlsx"));) {
XSSFWorkbook wb = new XSSFWorkbook(ins);
XSSFSheet sheet0 = wb.getSheetAt(0);
int firstRowNum = sheet0.getFirstRowNum();
int lastRowNum = sheet0.getLastRowNum();
System.out.println(wb);
System.out.println(sheet0);
System.out.println("firstRowNum=" + firstRowNum);
System.out.println("lastRowNum=" + lastRowNum);
XSSFRow row0 = sheet0.getRow(0);
System.out.println("row0.firstCellNum=" + row0.getFirstCellNum());
System.out.println("row0.LastCellNum=" + row0.getLastCellNum());
XSSFCell row0Cell0 = row0.getCell(0);
System.out.println("row0cell0.value=" + row0Cell0.getStringCellValue());
System.out.println("row0cell1.value=" + row0.getCell(1).getStringCellValue());
System.out.println("row1cell1=" + sheet0.getRow(1).getCell(1).getNumericCellValue());
} catch(Exception e) {
System.out.println(e);
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


