精华内容
下载资源
问答
  • POI解析

    2018-03-15 20:02:39
    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 官方文档:http://poi.apache.org/index.htmlHSSF - 提供读写Microsoft Excel XLS格式档案的功能...

         Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

        官方文档:http://poi.apache.org/index.html
    • HSSF - 提供读写Microsoft Excel XLS格式档案的功能。
    • XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
    • HWPF - 提供读写Microsoft Word DOC格式档案的功能。
    • HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
    • HDGF - 提供读Microsoft Visio格式档案的功能。
    • HPBF - 提供读Microsoft Publisher格式档案的功能。
    • HSMF - 提供读Microsoft Outlook格式档案的功能。

    HSSF

                HSSFWorkbook excel文档对象

                HSSFSheet excel的sheet 

                HSSFRow excel的行

                HSSFCell excel的单元格 

                HSSFFont excel字体

                HSSFName 名称 

                HSSFDataFormat 日期格式

                HSSFHeader sheet头

                HSSFFooter sheet尾

                HSSFCellStyle cell样式

                HSSFDateUtil 日期

                HSSFPrintSetup 打印

                HSSFErrorConstants 错误信息表

    二、API

      1、 得到Excel常用对象           

    1. POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));   
    2. //得到Excel工作簿对象    
    3. HSSFWorkbook wb = new HSSFWorkbook(fs);  
    4. //得到Excel工作表对象    
    5. HSSFSheet sheet = wb.getSheetAt(0);   
    6. //得到Excel工作表的行    
    7. HSSFRow row = sheet.getRow(i);  
    8. //得到Excel工作表指定行的单元格    
    9. HSSFCell cell = row.getCell((short) j);  
    10. cellStyle = cell.getCellStyle();//得到单元格样式  

     2、建立Excel常用对象

    1. HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象   
    2. HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象     
    3. HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行   
    4. cellStyle = wb.createCellStyle();//创建单元格样式   
    5. row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格   
    6. row.createCell((short)0).setCellValue(1); //设置Excel工作表的值  

    3、设置sheet名称和单元格内容
    1. wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);          
    2. cell.setEncoding((short) 1);      
    3. cell.setCellValue("单元格内容");  

    4、取得sheet的数目 
    1. wb.getNumberOfSheets()   

    5、  根据index取得sheet对象
    1. HSSFSheet sheet = wb.getSheetAt(0);  

    6、取得有效的行数
    1. int rowcount = sheet.getLastRowNum();  

    7、取得一行的有效单元格个数
    1. row.getLastCellNum();    

    8、单元格值类型读写

     [c-sharp] view plaincopyprint?

    1. cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型   
    2. cell.getNumericCellValue();//读取为数值类型的单元格内容  

     

    9、设置列宽、行高

     [c-sharp] view plaincopyprint?

    1. sheet.setColumnWidth((short)column,(short)width);      
    2. row.setHeight((short)height);    

     

    10、添加区域,合并单元格

     [c-sharp] view plaincopyprint?

    1. Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo  
    2. ,(short)columnTo);//合并从第rowFrom行columnFrom列   
    3. sheet.addMergedRegion(region);// 到rowTo行columnTo的区域      
    4. //得到所有区域       
    5. sheet.getNumMergedRegions()   

     

    11、保存Excel文件

     [c-sharp] view plaincopyprint?

    1. FileOutputStream fileOut = new FileOutputStream(path);   
    2. wb.write(fileOut);   

    12、常用单元格边框格式

    [c-sharp] view plaincopyprint?

    1. HSSFCellStyle style = wb.createCellStyle();      
    2. style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框        
    3. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框        
    4. style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框        
    5. style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框    

    13.设置字体和内容位置

     [c-sharp] view plaincopyprint?

    1. HSSFFont f  = wb.createFont();      
    2. f.setFontHeightInPoints((short) 11);//字号       
    3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗       
    4. style.setFont(f);      
    5. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中       
    6. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中       
    7. style.setRotation(short rotation);//单元格内容的旋转的角度       
    8. HSSFDataFormat df = wb.createDataFormat();      
    9. style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式       
    10. cell.setCellFormula(string);//给单元格设公式       
    11. style.setRotation(short rotation);//单元格内容的旋转的角度   

    14.插入图片

     [c-sharp] view plaincopyprint?

    1. //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray       
    2.       ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();      
    3.       BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));      
    4.       ImageIO.write(bufferImg,"jpg",byteArrayOut);      
    5. //读进一个excel模版       
    6. FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");       
    7. fs = new POIFSFileSystem(fos);      
    8. //创建一个工作薄       
    9. HSSFWorkbook wb = new HSSFWorkbook(fs);      
    10. HSSFSheet sheet = wb.getSheetAt(0);      
    11. HSSFPatriarch patriarch = sheet.createDrawingPatriarch();      
    12. HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);           
    13. patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));  

    15.调整工作表位置

     [c-sharp] view plaincopyprint?

    1. HSSFWorkbook wb = new HSSFWorkbook();     
    2. HSSFSheet sheet = wb.createSheet("format sheet");     
    3. HSSFPrintSetup ps = sheet.getPrintSetup();     
    4. sheet.setAutobreaks(true);     
    5. ps.setFitHeight((short)1);     
    6. ps.setFitWidth((short)1);   
    相关参考:http://www.cnblogs.com/fqfanqi/p/6172223.html   
                     http://rensanning.iteye.com/blog/1538591
    展开全文
  • Poi 解析

    2013-11-23 19:55:08
    经过一些查找工作,终于找到了可以在android系统上使用的用于读取Word格式文档的开源包--POI(The Java API For Microsoft Documents)。下载地址:http://poi.apache.org/  POI是Apache的一个子项目,其目的是提供...

    经过一些查找工作,终于找到了可以在android系统上使用的用于读取Word格式文档的开源包--POI(The Java API For Microsoft Documents)。下载地址:http://poi.apache.org/

           POI是Apache的一个子项目,其目的是提供对基于OOXML(Microsoft Office Open XML)和OLE2(Object Linking and Embedding)的各种文档操作的Java APIs包。该项目分为几个组件,其中包括一个叫做HWPF的组件,它只能操作Word文件。这就是我将要使用的组件。HWPF的全称是HorribleWord Processor Format。翻译成中文是“可怕的文档处理格式”,利用HWPF,开发者可以用纯Java代码实现在Android系统是读取Word文档。HWPF组件是POI项目中用来实现Word文档读取的一个重要组件,以下是该组件中几个重要的类:

    (1)Range:是所有HWPF对象模型的核心类,Word文档中字符的所有属性都是继承这个类得到的。

    (2)HWPFDocument:文件类。任何形式的Word文档的最终表现形式都是对该对象进行一些属性的定制。

    (3)Paragraph:是Word文档中基本的组成部分,每个文档都被划分成一个一个的段落,所有的段落最终组成一个Word文档。

    (4)Picture:Word文档中嵌入的每张图片都是由Picture对象来表示的,它包括了图片的大小、内容等一系列属性。

    (5)Table:Word文档中嵌入的每张表格都是有Table对象来表示的,它包括了表格中每行的TableRow对象和行数等属性。

           其他的类文件对以上核心的类进行功能补充,最终完成了Word 文档的读取。

           由于Word格式文档中有图片、表格和字符串,为了能在android系统上全部进行显示,选择使用WebView进行显示。首先将Word格式文档中的内容读取出来,加上对应的HTML标签,然后写入HTML文件中,最后直接使用WebView进行读取HTML文件的内容。

    判断当前段落是表格、图片还是一段文字的代码:

     

    错误!超链接引用无效。错误!超链接引用无效。错误!超链接引用无效。错误!超链接引用无效。

    1. public void writeParagraphContent(Paragraph paragraph){ Paragraph p = paragraph; int pnumCharacterRuns = p.numCharacterRuns(); for( int j = 0; j < pnumCharacterRuns; j++){ CharacterRun run = p.getCharacterRun(j); if(run.getPicOffset() == 0 || run.getPicOffset() >= 1000){ if(presentPicture < pictures.size()){ writePicture(); } } else{ try{ String text = run.text(); if(text.length() >= 2 && pnumCharacterRuns < 2){ output.write(text.getBytes()); } else{ int size = run.getFontSize(); int color = run.getColor(); String fontSizeBegin = "<font size=\"" + decideSize(size) + "\">"; String fontColorBegin = "<font color=\"" + decideColor(color) + "\">"; String fontEnd = "</font>"; String boldBegin = "<b>"; String boldEnd = "</b>"; String islaBegin = "<i>"; String islaEnd = "</i>"; output.write(fontSizeBegin.getBytes()); output.write(fontColorBegin.getBytes()); if(run.isBold()){ output.write(boldBegin.getBytes()); } if(run.isItalic()){ output.write(islaBegin.getBytes()); } output.write(text.getBytes()); if(run.isBold()){ output.write(boldEnd.getBytes()); } if(run.isItalic()){ output.write(islaEnd.getBytes()); } output.write(fontEnd.getBytes()); output.write(fontEnd.getBytes()); } } catch(Exception e){ System.out.println("Write File Exception"); } } } }  

     

    在SDCARD上创建一个图片的代码:

    错误!超链接引用无效。错误!超链接引用无效。错误!超链接引用无效。错误!超链接引用无效。

    1. public void writePicture(){ Picture picture = (Picture)pictures.get(presentPicture); byte[] pictureBytes = picture.getContent(); Bitmap bitmap = BitmapFactory.decodeByteArray(pictureBytes, 0, pictureBytes.length); makePictureFile(); presentPicture++; File myPicture = new File(picturePath); try{ FileOutputStream outputPicture = new FileOutputStream(myPicture); outputPicture.write(pictureBytes); outputPicture.close(); } catch(Exception e){ System.out.println("outputPicture Exception"); } String imageString = "<img src=\"" + picturePath + "\""; if(bitmap.getWidth() > screenWidth){ imageString = imageString + " " + "width=\"" + screenWidth + "\""; } imageString = imageString + ">"; try{ output.write(imageString.getBytes()); } catch(Exception e){ System.out.println("output Exception"); } }  

    运行效果截图:

    读取图片和文字:

    源代码及测试Word文档打包:

    http://download.csdn.net/source/3432624

    展开全文
  • poi解析excel

    2019-05-07 09:35:12
    一个解单的java工程,利用poi解析excel.下载代码直接可以运行。
  • poi解析EXCEL.zip

    2020-07-10 18:20:57
    poi解析EXCEL poi-3.13.jar,poi-ooxml-3.13.jar,poi-ooxml-schemas-3.13.jar,xmlbeans-2.3.0.jar
  • 使用POI解析读取Excel文档,里面有中文,有数字,大概有20个列,然后解析出来很多地方的最后面有一个问号,但是用问号匹配又不对,所以猜测其是乱码,或者说是不能显示的...详细如下:1. 使用POI解析读取Excel文档,...

    详细如下:1.使用POI解析读取Excel文档,里面有中文,有数字,大概有20个列,然后解析出来很多地方的最后面有一个问号,但是用问号匹配又不对,所以猜测其是乱码,或者说是不能显示的...

    详细如下:

    1. 使用POI解析读取Excel文档,里面有中文,有数字,大概有20个列,然后解析出来很多地方的最后面有一个问号,但是用问号匹配又不对,所以猜测其是乱码,或者说是不能显示的代码。

    2.部分代码如下:

    // 取得单元格

    HSSFCell cell = row.getCell(i + startCellNo);

    if (null != cell) {

    cell.setCellType(Cell.CELL_TYPE_STRING);// 设置为字符串

    // 取得字符串值

    String value = cell.getStringCellValue();

    value = value.replaceAll( "[^\u8140-\ufefe]+ ", " ");//过滤非中文字符,换成gbk的编码范围

    value = value.replaceAll( "[^\u4e00-\u9fa5]+ ", " ");//过滤非中文字符,换成gbk的编码范围

    value = value.replaceAll("\\?", "");

    System.out.println(value.indexOf("?")); // 此处结果打印出来全是 -1

    ...

    // 以上的代码均不能把数据正确显示

    // 正常的 "五华区" 显示出来就是"五华区 ?"

    // 我采用的方法是针对有问号的列,截取掉最后一个字符

    但是这种方法非常不好,因为有的时候是这一列,有的时候是那一列,所有偶尔会多截取了,比如 "五华区"变成"五华"这种情况。

    特此请教:

    1. 怎么把那个最后的问号去掉,让数据显示正常。

    2. 怎么设置Excel文档,让其没有这种乱码或者说符号。

    以上两个问题只要回答出来一个,确实可用即可,好像100分式最多的分了。谢谢。

    不知道问题里可不可以留下联系方式,我的Email是:551996458#qq.com.可用向我发邮件或者发消息,也可用直接回答,我每天都看的。

    展开

    展开全文
  • 使用poi解析excel示例代码packagecom.test;importjava.io.FileInputStream;importjava.util.ArrayList;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.openxml4j.exceptions.Invalid...

    使用poi解析excel示例代码

    package com.test;

    import java.io.FileInputStream;

    import java.util.ArrayList;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.openxml4j.exceptions.InvalidOperationException;

    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;

    public class ReadExcel {

    /**

    * 解析指定目录下的Excel文件,并返回二元集合形式的数据

    * @param fileName 文件名

    * @param path 文件路径

    * @return 已解析完成的二元集合数据

    */

    public ArrayList> readExcel(String fileName, String path) {

    ArrayList> Row = new ArrayList>();

    Workbook workBook = null;

    try {

    // 此处为兼容excel2003与2007

    try {

    workBook = new XSSFWorkbook(path + "\\" + fileName);

    } catch (InvalidOperationException ex) {

    workBook = new HSSFWorkbook(new FileInputStream(path + "\\" + fileName));

    }

    /*

    * 开始遍历excel文件:

    * 此处嵌套三层for循环,最外层遍历工作薄,第二层遍历行,第三层遍历该行的每个单元格

    */

    for (int numSheet = 1; numSheet 

    Sheet sheet = workBook.getSheetAt(numSheet);

    if (sheet == null) {

    continue;

    }

    // 循环行Row

    for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {

    Row row = sheet.getRow(rowNum);

    if (row == null) {

    continue;

    }

    // 循环列Cell

    ArrayList arrCell = new ArrayList();

    for (int cellNum = 0; cellNum <= row.getLastCellNum(); cellNum++) {

    Cell cell = row.getCell(cellNum);

    if (cell == null) {

    continue;

    }

    arrCell.add(getValue(cell));

    }

    Row.add(arrCell);

    }

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    return Row;

    }

    /**

    * 读取单元格中的值

    * @param cell 单元格

    * @return 单元格中的字符串

    */

    private String getValue(Cell cell) {

    if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {

    return String.valueOf(cell.getBooleanCellValue());

    } else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {

    /*

    * 当单元格为数字类型时,还需要判断是否为日期类型

    * 因为在Excel中的Date类型也是以Double类型的数字存储的

    */

    if (HSSFDateUtil.isCellDateFormatted(cell))

    return String.valueOf(new Date(cell.getDateCellValue().getTime()));

    return String.valueOf(cell.getNumericCellValue());

    } else {

    return String.valueOf(cell.getStringCellValue());

    }

    }

    public static void main(String[] args) {

    ReadExcel s = new ReadExcel();

    //ArrayList> row=s.readExcel("TEST.xlsx","D:\\Program Files\\Java");

    ArrayList> row = s.readExcel("test.xls", "C:\\");

    System.out.println("size:" + row.size());

    for (ArrayList cell : row) {

    for (String str : cell) {

    System.out.print(str + "\t");

    }

    System.out.println();

    }

    }

    }

    展开全文
  • POI解析单元格格式

    千次阅读 2017-11-27 16:51:45
    POI解析单元格格式
  • POI解析Excel

    2016-10-22 21:29:33
    POI解析Excel
  • 通过poi解析Excel示例

    2016-06-23 22:13:18
    通过poi解析Excel示例
  • poi解析Excel

    2016-05-15 17:41:51
    poi解析Excel
  • java poi解析word的方法

    2020-08-30 14:38:25
    主要为大家详细介绍了java poi解析word的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java用POI解析excel并获取所有单元格数据的实例1.导入POI相关jar包org.apache.poi jar2.代码示例public List getAllExcel(File file, String tableName, String fname,String enterpriseId, String reportId, String...
  • poi解析xlsx

    万次阅读 2014-07-16 09:46:22
    poi解析xlsx
  • Java POI解析Word提取数据存储在Excel一、了解POIPOI以前有了解,这次需求是解析word读取其中标题,还有内容赛选获取自己想要的内容经过两天的学习,开始熟悉Java这么读取word和解析。本文中运用是读取整个页面模块...
  • POI解析Excel表格

    2020-03-02 15:45:05
    POI解析Excel表格食谱准备食材第一道菜第二道菜下锅炸至两面金黄吃一口嘎嘣脆 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 这里实现poi解析Excel...
  • Poi解析Excel

    2017-05-18 22:43:00
    Poi解析Excel POI jar下载地址:https://archive.apache.org/dist/poi/release/bin/  SSF是POI工程对Excel 97(-2007)文件操作的纯Java实现 XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现  从...
  • poi解析word的所有jar包

    2019-02-28 17:52:29
    poi解析word文档的所需jar包,有poi-3.9.jar ,poi-ooxml-3.8-20120326.jar poi-scratchpad-3.8-20120326.jar dom4j-1.6.1.jar xmlbeans-2.6.2.jar ooxml-schemas-1.1.jar 解析word表格的示例代码地址为...
  • POI解析上传文件

    2020-02-28 10:06:20
    描述:开发中总会遇到上传Excel文件、解析文件、入库操作 本篇主要分享一下,POI解析Excel文件的代码,为下一篇调用 cell.getStringCellValue()解析数值,出现多位小数的BUG铺垫 ...
  • 2 importorg.apache.poi.hssf.usermodel.HSSFDataFormat;3 importorg.apache.poi.hssf.usermodel.HSSFWorkbook;4 import org.apache.poi.ss.usermodel.*;5 importorg.apache.poi.xssf.usermodel.X...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,268
精华内容 1,307
关键字:

poi解析