Apache POI 官网下载:
http://poi.apache.org/download.html
下面需要用到的 poi jar 包百度网盘分享:
https://pan.baidu.com/s/1i4DDcpB
具体代码
java 使用 poi 读取 Word:
这里我们把在 word 中读取到的图片保存到一个专门的地方,内容用 html 的 img 标签代替
/**
* 读取doc文件
* docPath: doc文件路径
* descImageFolder: doc文件中的图片存放位置文件夹
*/
public static StringBuilder readDoc(String docPath,String descImageFolder) throws Exception{
InputStream is=new FileInputStream(new File(docPath));
//poi读取doc
HWPFDocument doc=new HWPFDocument(is);
//存储doc内容
StringBuilder sb=new StringBuilder();
//获取doc图片表格对象
PicturesTable pt=doc.getPicturesTable();
Range docr=doc.getRange();
CharacterRun run=null;
for (int i = 0; i < docr.numCharacterRuns(); i++) {
run=docr.getCharacterRun(i);
//判断是不是图片
if(pt.hasPicture(run)){
//图片对象
Picture pic=pt.extractPicture(run, true);
//图片路径,文件以系统时间命名
String imgSrc=descImageFolder+"/"+System.currentTimeMillis()+"."+pic.suggestFullFileName();
sb.append("<img src='").append(imgSrc).append("' />");
//输出图片
this.writeFile(imgSrc,pic.getContent());
}else{
//在该范围内遍历字符,判断是否有换行符
for(int j=run.getStartOffset();j<run.getEndOffset();j++){
//获取单个字符
String text=new Range(j, j+1, doc).text();
int code=text.hashCode();
//根据code判断是否有换行
if(code==13||code==7)
sb.append("\n");
else
sb.append(text);
}
}
}
return sb;
}
/**输出文件*/
public static void writeFile(String path,byte []file){
try{
File f=new File(path);
if(!f.exists())
f.createNewFile();
OutputStream os=new FileOutputStream(f);
os.write(file);
os.close();
}catch(Exception e){e.printStackTrace();}
}
//main方法测试
public static void main(String[] args) throws Exception {
String docPath="C:/Users/Administrator/Desktop/测试.doc";
String descImageFolder="C:/Users/Administrator/Desktop";
StringBuilder sb=readDoc(docPath, descImageFolder);
System.out.println(sb.toString());
}
java 使用 poi 读取 Excel:
//读取Excel打印到控制台
public static void main(String[] args) throws Exception{
String xlsPath="C:/Users/Administrator/Desktop/测试.xls";
//读取excel对象
HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(xlsPath));
//获取sheet数
int sheets=workbook.getNumberOfSheets();
HSSFSheet sheet=null;//sheet
HSSFRow row=null;//row
HSSFCell cell=null;//cell
//遍历sheets
for (int i = 0; i < sheets; i++) {
sheet=workbook.getSheetAt(i);
//遍历行
for (int j = 0; j <= sheet.getLastRowNum(); j++) {
row=sheet.getRow(j);
//遍历列
for (int s = 0; s < row.getLastCellNum(); s++) {
cell=row.getCell(s);
//打印列的值用|隔开,这里需要判断列的类型
System.out.print(getCellValue(cell)+" | ");
}
//换行
System.out.println();
}
}
}
//获取列的值,返回String
public static String getCellValue(HSSFCell cell){
if(cell==null) return null;
Object obj=null;
int type=cell.getCellType();
//列为空
if(type==cell.CELL_TYPE_BLANK){
obj="";
//boolean类型
}else if(type==cell.CELL_TYPE_BOOLEAN){
obj=cell.getBooleanCellValue();
//数字/时间
}else if(type==cell.CELL_TYPE_NUMERIC){
if(HSSFDateUtil.isCellDateFormatted(cell))
obj=cell.getDateCellValue();
else
obj=cell.getNumericCellValue();
//字符串类型
}else if(type==cell.CELL_TYPE_STRING){
obj=cell.getStringCellValue();
//其他类型
}else/* if(type==cell.CELL_TYPE_FORMULA)*/{
obj=cell.toString();
}
return obj!=null?String.valueOf(obj):null;
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于