一、简介
Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。
官方主页:http://poi.apache.org/index.html
API文档:http://poi.apache.org/apidocs/index.html
二、开发环境配置
下载jar
官方下载:http://poi.apache.org/download.html
这里可以下载到它的最新版本和文档,目前最新版本是4.0
加入jar包
在下载好的文件内找到下面几个类,复制到项目根目录,新建文件夹lib放好
三、工程代码
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
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;
public class ReadExcel {
public static void main(String[] args) throws IOException {
//打开根目录下的English.txt
File file = new File(".\\English.txt");
if (!file.exists()) {
System.out.println("文件不存在");
return;
}
Scanner scanner = new Scanner(file);
//单词和次数的映射表
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
//正则表达式,过滤数字
String lline = line.replaceAll("[0-9]", "");
//正则表达式,以非字符分割字符串
String[] lineWords = lline.split("\\W+");
Set<String> wordSet = hashMap.keySet();
for (int i = 0; i < lineWords.length; i++) {
if (wordSet.contains(lineWords[i])) {
Integer number = hashMap.get(lineWords[i]);
number++;
hashMap.put(lineWords[i], number);
} else {
hashMap.put(lineWords[i], 1);
}
}
}
//创建一个workbook对应一个excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
//在workbook中创建一个sheet
HSSFSheet sheet = workbook.createSheet("sheet1");
//在sheet表中添加表头第0行
HSSFRow row = sheet.createRow(0);
//创建单元格
HSSFCell cell = row.createCell(0);
Iterator<String> iterator = hashMap.keySet().iterator();
//读入数据
for (int i = 1; iterator.hasNext(); i++) {
String word = iterator.next();
HSSFRow nextrow = sheet.createRow(i - 1);
cell = nextrow.createCell(0);
cell.setCellValue(word);
cell = nextrow.createCell(1);
cell.setCellValue(hashMap.get(word));
}
//将文件保存根目录下
try {
FileOutputStream fos = new FileOutputStream(".\\result.xls");
workbook.write(fos);
System.out.println("写入完成");
fos.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
workbook.close();
}
}
}
四、演示
在根目录下创建English.txt,写入一篇英语短文
导出的Excel文件