`
ansjsun
  • 浏览: 203845 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OpenOffice学习笔记二创建一个Openoffice文档

    博客分类:
  • J2EE
阅读更多
好了代码如下.我不废话了
package ansj.sun.os;

import ooo.connector.BootstrapSocketConnector;

import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.XPropertySet;
import com.sun.star.container.XEnumeration;
import com.sun.star.container.XEnumerationAccess;
import com.sun.star.frame.XComponentLoader;
import com.sun.star.frame.XController;
import com.sun.star.frame.XModel;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.sheet.XCellAddressable;
import com.sun.star.sheet.XCellRangesQuery;
import com.sun.star.sheet.XSheetCellRanges;
import com.sun.star.sheet.XSpreadsheet;
import com.sun.star.sheet.XSpreadsheetDocument;
import com.sun.star.sheet.XSpreadsheetView;
import com.sun.star.sheet.XSpreadsheets;
import com.sun.star.table.XCell;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;

public class ConnOpenOffice {
	public static void main(String[] args) {
		try {
			// 连接OpenOffice
			String oooExecFolder = "C:/Program Files/OpenOffice.org 3/program/";
			XComponentContext xRemoteContext = BootstrapSocketConnector
					.bootstrap(oooExecFolder);

			System.out.println("Connected to a running office ...");

			XMultiComponentFactory xRemoteServiceManager = xRemoteContext
					.getServiceManager();

			Object desktop = xRemoteServiceManager.createInstanceWithContext(
					"com.sun.star.frame.Desktop", xRemoteContext);

			XComponentLoader xComponentLoader = (XComponentLoader) UnoRuntime
					.queryInterface(XComponentLoader.class, desktop);

			PropertyValue[] loadProps = new PropertyValue[0];

			XComponent xSpreadsheetComponent = xComponentLoader
					.loadComponentFromURL("private:factory/scalc", "_blank", 0,
							loadProps);

			XSpreadsheetDocument xSpreadsheetDocument = (XSpreadsheetDocument) UnoRuntime
					.queryInterface(XSpreadsheetDocument.class,
							xSpreadsheetComponent);

			XSpreadsheets xSpreadsheets = xSpreadsheetDocument.getSheets();
			xSpreadsheets.insertNewByName("MySheet", (short) 0);
			com.sun.star.uno.Type elemType = xSpreadsheets.getElementType();

			System.out.println(elemType.getTypeName());
			Object sheet = xSpreadsheets.getByName("MySheet");
			XSpreadsheet xSpreadsheet = (XSpreadsheet) UnoRuntime
					.queryInterface(XSpreadsheet.class, sheet);
			XCell xCell = xSpreadsheet.getCellByPosition(0, 0);
			xCell.setValue(21);
			xCell = xSpreadsheet.getCellByPosition(0, 1);
			xCell.setValue(21);
			xCell = xSpreadsheet.getCellByPosition(0, 2);
			xCell.setFormula("=sum(A1:A2)");

			XPropertySet xCellProps = (XPropertySet) UnoRuntime.queryInterface(
					XPropertySet.class, xCell);
			xCellProps.setPropertyValue("CellStyle", "Result");

			XModel xSpreadsheetModel = (XModel) UnoRuntime.queryInterface(
					XModel.class, xSpreadsheetComponent);
			XController xSpreadsheetController = xSpreadsheetModel
					.getCurrentController();
			XSpreadsheetView xSpreadsheetView = (XSpreadsheetView) UnoRuntime
					.queryInterface(XSpreadsheetView.class,
							xSpreadsheetController);
			xSpreadsheetView.setActiveSheet(xSpreadsheet);

			// *********************************************************
			// example for use of enum types
			xCellProps.setPropertyValue("VertJustify",
					com.sun.star.table.CellVertJustify.TOP);

			// *********************************************************
			// example for a sequence of PropertyValue structs
			// create an array with one PropertyValue struct, it contains
			// references only
			loadProps = new PropertyValue[1];

			// instantiate PropertyValue struct and set its member fields
			PropertyValue asTemplate = new PropertyValue();
			asTemplate.Name = "AsTemplate";
			asTemplate.Value = new Boolean(true);

			// assign PropertyValue struct to array of references for
			// PropertyValue
			// structs
			loadProps[0] = asTemplate;

			// load calc file as template
			// xSpreadsheetComponent = xComponentLoader.loadComponentFromURL(
			// "file:///c:/temp/DataAnalysys.ods", "_blank", 0, loadProps);

			// *********************************************************
			// example for use of XEnumerationAccess
			XCellRangesQuery xCellQuery = (XCellRangesQuery) UnoRuntime
					.queryInterface(XCellRangesQuery.class, sheet);
			XSheetCellRanges xFormulaCells = xCellQuery
					.queryContentCells((short) com.sun.star.sheet.CellFlags.FORMULA);
			XEnumerationAccess xFormulas = xFormulaCells.getCells();
			XEnumeration xFormulaEnum = xFormulas.createEnumeration();

			while (xFormulaEnum.hasMoreElements()) {
				Object formulaCell = xFormulaEnum.nextElement();
				xCell = (XCell) UnoRuntime.queryInterface(XCell.class,
						formulaCell);
				XCellAddressable xCellAddress = (XCellAddressable) UnoRuntime
						.queryInterface(XCellAddressable.class, xCell);
				System.out.println("Formula cell in column "
						+ xCellAddress.getCellAddress().Column + ", row "
						+ xCellAddress.getCellAddress().Row + " contains "
						+ xCell.getFormula());
			}

		} catch (java.lang.Exception e) {
			e.printStackTrace();
		} finally {
			System.exit(0);
		}
	}
}
分享到:
评论

相关推荐

    my private documents

    【描述】:“我的私人文档”这个标题暗示了这是一个包含个人文件的压缩包,可能包含个人笔记、工作文档、研究报告或其他私密信息。由于这是个人文档,我们可以推测其中的文件可能涉及隐私,且与用户的工作、学习或...

    雷亚男610581198607230327.zip

    从压缩包子文件的文件名称"雷亚男610581198607230327.doc"来看,这似乎是一个DOC格式的文档,可能是个人简历、报告或者笔记,内容可能涵盖各种主题,如专业技能、工作经验、学习记录等。 在IT行业中,ZIP是一种常见...

    我的学习过程总看到的一点点的新的,所以记录夏利了

    RTF文件通常包含文字、样式、字体、颜色以及图像等元素,这可能是作者记录学习笔记或教程的一种方式。 在学习IT时,掌握富文本格式的理解和使用是非常重要的。RTF文件可以被Microsoft Word、OpenOffice Writer等...

    145-半文(1).zip

    这表明压缩包解压后会得到一个Microsoft Word文档,可能是一个报告、论文、笔记或者其他类型的文档。".doc"是Word文档的标准扩展名,通常用于编写和编辑文字内容,支持格式化、图片插入、表格创建等功能。 在这个...

    完整的OFDM,完整的office办公软件有哪些,matlab源码.zip

    标题中的“完整的OFDM”指...对于学习无线通信、信号处理以及熟悉Office工具的用户来说,这是一个宝贵的学习资源。通过研究提供的MATLAB源码,用户可以深入理解OFDM算法的细节,同时了解如何在实际项目中应用这些技术。

    Rtf Editor rtf编辑器

    它通过一种特殊的编码方式来表示文本的格式化信息,使得一个应用程序创建的文档能在其他不支持原生格式的应用程序中打开和编辑。 2. **RtfEditor控件** RtfEditor控件通常是一个软件开发组件,用于集成到应用程序...

    Ubuntu_桌面培训_部分2

    综上所述,本课程不仅提供了Ubuntu操作系统的基础知识,还重点介绍了如何使用OpenOffice.org Writer和Calc这两款办公软件进行文档编辑和电子表格处理的基本操作。通过学习这些内容,用户可以更加高效地利用Ubuntu...

    参考资料-附件.zip

    【压缩包子文件的文件名称列表】:参考资料-附件.docx是一个Microsoft Word文档,可能是压缩包内的唯一文件。.docx是Word 2007及更高版本使用的默认文件格式,它以XML为基础,支持更丰富的格式化和内容结构。此文件...

    一个日记本

    标题中的“一个日记本”可能是指一款用于记录个人日常、工作或学习的软件,它提供了方便的文本编辑和整理功能,使得用户可以轻松保存和管理他们的日记或笔记。这款日记本软件强调的是绿色版本,意味着它可能不含有...

    2_信考Office 2003完整版.rar

    总的来说,Office 2003以其稳定性和易用性深受用户喜爱,虽然已被更新的版本取代,但对于熟悉其界面和功能的用户来说,仍然是一个高效的工作工具。通过熟练掌握各个组件的使用技巧,可以大大提高日常办公的效率和...

    Ubuntu Guide - Bahasa Indonesia

    - **强大的社区支持**:Ubuntu由一个活跃的全球开发者社区维护和支持。 ### 二、Ubuntu的优点 - **稳定性与安全性**:Ubuntu因其强大的社区支持而具备较高的稳定性和安全性。 - **软件更新**:Ubuntu拥有丰富的...

    redhat 课堂笔记

    - **分区限制**:每块硬盘最多可拥有4个主分区,其中可有一个被替换为一个逻辑分区。仅允许存在一个扩展分区,而逻辑分区则位于扩展分区内部。 - **设备命名规则**:IDE接口硬盘设备名为`/dev/hd[a-d]`,SCSI接口...

    笔记

    在IT行业中,笔记是一种非常重要的学习和工作工具,它帮助我们整理、记录和回顾各种技术知识。本笔记主要关注的是富文本格式(Rich Text Format,简称RTF),这是一种通用的文档格式,允许跨平台和跨应用程序的数据...

    办公自动化软件哪个好.docx

    尽管它可能没有Microsoft Office那么广泛的应用,但对于那些寻求免费解决方案且对开源软件有偏好的用户来说,LibreOffice无疑是一个很好的选择。 在选择办公自动化软件时,用户需要考虑的因素包括价格、功能需求、...

    认识KnoppixKnowing Knoppix

    这使得Knoppix成为了一个非常方便的工具,既可用于系统恢复,也可作为学习Linux操作系统的入门级平台。此外,Knoppix还自带了大量的开源软件,涵盖了办公、图像处理、编程开发等多个领域,非常适合于日常使用和紧急...

    翟京:开放教育资源在中国

    - **电子书制作**:Apache OpenOffice、LibreOffice、NeoOffice以及Sigil等工具可以用来制作电子书,TeX及其相关变体也是创建高质量文档的好选择。有关更多内容,可参考http://goo.gl/StVsDa。 #### 自由在线课程...

    817-1994-10.pdf Oracle Solaris 9 - Solaris 9 8/03 Sun Hardware P

    Oracle Solaris 9 - Solaris 9 8/03 Sun Hardware Platform ...Solaris 9 操作系统是一个功能强大、灵活性高的 Unix 操作系统,具有广泛的应用前景。用户可以根据实际情况选择 Solaris 9 操作系统,以满足自己的需求。

    Xmind学习分享;XMind各部分功能介绍;实际应用举例

    - **中心主题**:每张思维图有且仅有一个中心主题,在新建图时自动生成,位于图的中心位置。 - **分支主题**:围绕中心主题的第一层主题,记录与中心主题相关的信息。 - **子主题**:分支主题或自由主题后面的附加...

Global site tag (gtag.js) - Google Analytics