乔山办公网我们一直在努力
您的位置:乔山办公网 > office365 > <em>java</em> 读取office文档-永中office java,永中office还

<em>java</em> 读取office文档-永中office java,永中office还

作者:乔山办公网日期:

返回目录:office365


Person类:


public class Person {

    private String address;

    private String name;

    private String phoneNumber;

    public String mailBox;

    public void showMessage() {
        System.out.println("[ address(地址) = " + address + ", name(名字) = " + name + ", phoneNumber(电话号码) = "
                + phoneNumber + ", mailBox(电子邮箱) = " + mailBox + " ]");
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getMailBox() {
        return mailBox;
    }

    public void setMailBox(String mailBox) {
        this.mailBox = mailBox;
    }

}

Employee 类:

public class Employee extends Person {
    private double pay;

    private String office;

    public double getPay() {
        return pay;
    }

    public void setPay(double pay) {
        this.pay = pay;
    }

    public String getOffice() {
        return office;
    }

    public void setOffice(String office) {
        this.office = office;
    }

    public void showMessage() {
            /**
             * 输出自己的属性
             */
            System.out.println("[ pay(工资) = " + pay + ", office(办公室) = " + office + ", address(地址) = " + getAddress()
                    + ", name(名字) = " + getName() + ", phoneNumber(电话号码) = " + getPhoneNumber() + ", mailBox(电子邮箱) = "
                    + getMailBox() + " ]");
        }

    public static void main(String[] args) {
        /**
         * 创建父类对象。
         */
        Person p = new Person();
        /**
         * 给父类的属性赋值。
         */
        p.setAddress("中国上海");
        p.setMailBox("");
        p.setName("张三");
        p.setPhoneNumber("");
        /**
         * 调用父7a64e78988e69d83339类的 showMessage 。
         */
        p.showMessage();
        /**
         * 创建子类对象。
         */
        Employee e = new Employee();
        /**
         * 继承了 Person 类所以也可以调用 Person 类的 set 方法。
         * 给子类的属性赋值。
         */
        e.setAddress("中国杭州");
        e.setMailBox("");
        e.setName("李四");
        e.setPhoneNumber("");
        e.setOffice("开发部");
        e.setPay(1000);
        /**
         * 调用子类的 showMessage 。
         */
        e.showMessage();
    }

}

Person 类定义了一些私有的属性,子类并不能直接访问,但是针对这些属性提供了公开的 get 、 set 方法,子类继承父类后也就拥有了这些 get 和 set 方法(包括 showMessage方法)。Person 类在 showMessage 中将自己的私有属性都打印了一遍。

Employee 类继承了 Person 类,重写了 showMessage 方法,除了自己的私有属性,可以通过父类的 get 方法获取父类的私有属性。在 main 方法中,通过 set 方法对父类的属性和自己的属性进行了赋值。

希望能对您有所帮助。



OFFICE文档使用POI控件,PDF可以使用PDFBOX0.7.3控件,完全支持中文,用XPDF也行,不过感觉PDFBOX比较好,而且e799bee5baa6e78988e69d83362作者也在更新。水平有限,万望各位指正
WORD:
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.poi.hwpf.extractor.WordExtractor;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import com.search.code.Index;
public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {
String bodyText = null;
try {
WordExtractor ex = new WordExtractor(is);//is是WORD文件的InputStream
bodyText = ex.getText();
if(!bodyText.equals("")){
index.AddIndex(url, title, bodyText);
}
}catch (DocCenterException e) {
throw new DocCenterException("无法从该Mocriosoft Word文档中提取内容", e);
}catch(Exception e){
e.printStackTrace();
}
}
return null;
}
Excel:
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import com.search.code.Index;
public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {
StringBuffer content = new StringBuffer();
try{
HSSFWorkbook workbook = new HSSFWorkbook(is);//创建对Excel工作簿文件的引用
for (int numSheets = 0; numSheets
这样可以么?
OpenOffice java api:

简单的说就是利用java程序可以操作OpenOffice的所有功能,比如创建doc文档,插入文字,设置文字格式等等。

1. OpenOffice 给程序员提供了一个叫UNO (UniversalNetwork Objects)的组件技术.我理解的UNO: OpenOffice 类似于web程序中的服务器,程序员写的代码类似于客户端,利用UNO提供的接口和服务去完成对OpenOffice文档的操作。所以写程序首先要搭建 UNO环境:

1. 下载 OpenOffice

2.复制UNO提供的jar包: unoil.jar, java_uno.jar, juh.jar, jurt.jar, ridl.jar, unoloader.jar. (ps: 安装了SDK之后在文件夹找)到自己的工程中,引入它们。

3. 下载文档:DevelopersGuide.pdf.

4. 安装了SDK后,重新启动一下机器,然后就可以按照 DevelopersGuide 来学习 UNO 编程了。

5. 需要ava 环境。

补充: 安装了SDK后, java, c++帮助文档,样例程序,其他关于sdk的信息 都放在本地openOffice安装路径一个叫sdk目录下面,enjoy it !

总结一下已经实现的功能和碰到的问题汇总:

1. 首先要得到远程office组件的上下文.通过:

com.sun.star.uno.XComponentContext xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();

得到,如果OpenOffice安装路径不是在工程的路径下e799bee5baa6e997aee7ad94e59b9ee7ad94337面(我自己猜的), 就会报:

com.sun.star.comp.helper.BootstrapException: no office executable found!

解决办法: 黑其源代码, 看了源代码就会发现其实OpenOffice是在寻找本地的soffice的shell文件,所以弄个变量来保存soffice在系统中的路径,重新写一 个Bootstrap就可以了。详细请参照:论坛 。

2. 得到 XMultiComponentFactory (ComponentFactory 工厂)

com.sun.star.lang.XMultiComponentFactory xMCF = xContext.getServiceManager();

3. 得到各种组件可以通过下面代码:

// docType 是 与 soffice 同目录下面的OpenOffice的其他shell文件,swrite等等

protected XComponent newDocComponent(String docType)
throws java.lang.Exception {
String loadUrl = "private:factory/" + docType;

mxRemoteServiceManager = this.getRemoteServiceManager();
Object desktop = mxRemoteServiceManager.createInstanceWithContext(
"com.sun.star.frame.Desktop", mxRemoteContext);

XComponentLoader xComponentLoader = (XComponentLoader) UnoRuntime
.queryInterface(XComponentLoader.class, desktop);
PropertyValue[] loadProps = new PropertyValue[0];

return xComponentLoader.loadComponentFromURL(loadUrl, "_blank", 0,
loadProps);
}

4.得到 XTextDocument

XComponent xEmptyWriterComponent = newDocComponent("swriter");

XTextDocument mxDoc = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,
xEmptyWriterComponent);

5. 得到一个文档的引用

XText mxDocText = mxDoc.getText();

6. 得到文档的属性列表

XPropertySet mxDocProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, mxDoc);

7. 建立光标,用来插入新的内容。

XTextCursor mxDocCursor = mxDocText.createTextCursor();

XSentenceCursor xSentenceCursor = (XSentenceCursor) UnoRuntime
.queryInterface(XSentenceCursor.class, mxDocCursor);

XWordCursor xWordCursor = (XWordCursor) UnoRuntime.queryInterface(
XWordCursor.class, mxDocCursor);

8.得到光标属性列表

XPropertySet xCursorProps = (XPropertySet) UnoRuntime .queryInterface(XPropertySet.class, mxDocCursor);

9.设置插入文字格式

xCursorProps.setPropertyValue("CharFontName", "宋体");
xCursorProps.setPropertyValue("CharWeight", new Float(FontWeight.BOLD));
xCursorProps.setPropertyValue("CharHeight", new Float(10.5));
// 居中显示
xCursorProps.setPropertyValue("ParaAdjust", com.sun.star.style.ParagraphAdjust.CENTER);

10.在该光标处插入信息

mxDocText.insertString(xSentenceCursor, “Hello World", true);

11. 保存的关键代码

protected void storeDocComponent(XComponent xDoc, String storeUrl)
throws java.lang.Exception {

XStorable xStorable = (XStorable) UnoRuntime.queryInterface(
XStorable.class, xDoc);
PropertyValue[] storeProps = new PropertyValue[1];
storeProps[0] = new PropertyValue();
storeProps[0].Name = "FilterName";
storeProps[0].Value = "MS Word 97";

openOfficeJavaLogger.debug("... store \"" + xDoc.toString() + "\" to \"" + storeUrl
+ "\".");

xStorable.storeAsURL(storeUrl, storeProps);
}

你导入的yozo.jar?

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网