前一段时间Java处理Excel文件都是使用JXL这个库,后来发现这个库并不支持xlsx这种高版本的格式,而且不能处理大量的数据,就找到了POI这个库html
Apache POI项目的任务是根据Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)建立和维护Java API,以处理各类文件格式。简而言之,能够使用Java读取和写入Microsoft Excel文件。此外,您能够使用Java读取和写入Microsoft Word和Microsoft PowerPoint文件c++
从poi.apache.org/download.ht… 下载最新的POI库,以后解压,获取咱们须要的jar
apache
建立一个sheet的步骤时首先必须来建立一个工做簿对象(XSSFWorkbook),第二不就是在使用XSSFWorkbook对象建立一个sheetbash
//创件一个工做簿
XSSFWorkbook workbook = new XSSFWorkbook();
//建立一个电子表格
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");复制代码
XSSFWorkbook类:能够对对Excel进行读写,它兼容.xls和.xlsx格式,支持office的2007或者更高版本,
HSSFWorkbook类:能够对对Excel进行读写,它兼容.xls格式,不支持高版本的office
因此通常咱们会使用XSSFWorkbook来操做表格,看看如何向单元格里保存数据ui
public class WriteSheetTest {
private static final String PATH = "WriteSheet.xlsx"; //文件路径
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream(PATH);
//建立一个工做簿
XSSFWorkbook workbook = new XSSFWorkbook();
//建立一个电子表格
XSSFSheet sheet = workbook.createSheet("mySheet");
//行对象
XSSFRow row ;
for(int r = 0 ;r<3;r++) {
//1.建立一个行对象
row = sheet.createRow(r);
for(int c = 0;c<3;c++) {
//2.建立一个单元格
Cell cell = row.createCell(c);
cell.setCellValue(r+c);
}
}
FileOutputStream fos = new FileOutputStream(PATH);
workbook.write(fos);
workbook.close();
}
}复制代码
public class Readsheet
{
static XSSFRow row;
public static void main(String[] args) throws Exception
{
FileInputStream fis = new FileInputStream(
new File("WriteSheet.xlsx"));
//打开须要读取的文件
XSSFWorkbook workbook = new XSSFWorkbook(fis);
//按照SHEET的名称读取一个电子表格
XSSFSheet sheet = workbook.getSheet("mySheet");
// int size = sheet.getLastRowNum();
// System.out.println(size);
// int s= sheet.getPhysicalNumberOfRows();
// System.out.println(s);
//获取一个行的迭代器
Iterator<Row> rowIterator = sheet.rowIterator();
while(rowIterator.hasNext()) {
row = (XSSFRow) rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellTypeEnum() ) {
case NUMERIC:
double val = cell.getNumericCellValue();
System.out.print(val+"\t\t");
break ;
case STRING:
String str = cell.getStringCellValue();
System.out.print(str+"\t\t");
}
}
System.out.println();
}
fis.close();
}
}复制代码
运行结果:
0.0 1.0 2.0
1.0 2.0 3.0
2.0 3.0 4.0
这里须要注意,在读取单元格的值时须要先判断数据类型,否则获取数据会报数据类型错误。spa