将word里的内容保存到服务器?

将word里的内容保存到服务器?,第1张

首先引入类库,MicrosoftOfficeInteropWord,然后进行编程。代码如下:
using System;
using SystemCollectionsGeneric;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemText;
using SystemWindowsForms;
using MicrosoftOfficeInteropWord; 数据挖掘研究院
namespace WordTest
{
public partial class Form1 : Form
{
object strFileName;
Object Nothing;
MicrosoftOfficeInteropWordApplication myWordApp = new MicrosoftOfficeInteropWordApplicationClass();
Document myWordDoc;
string strContent = ""; 数据挖掘研究院
public Form1()
{
InitializeComponent();
}
数据挖掘研究院
private void button1_Click(object sender, EventArgs e)
{
createWord();
//openWord();
} 数据挖掘研究院
private void createWord()
{
strFileName = SystemWindowsFormsApplicationStartupPath + "testdoc";
if (SystemIOFileExists((string)strFileName))
SystemIOFileDelete((string)strFileName);
Object Nothing = SystemReflectionMissingValue;
myWordDoc = myWordAppDocumentsAdd(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
数据挖掘研究院
#region 将数据库中读取得数据写入到word文件中 数据挖掘研究院
strContent = "你好 ";
myWordDocParagraphsLastRangeText = strContent;
数据挖掘实验室
strContent = "这是测试程序";
myWordDocParagraphsLastRangeText = strContent; 数据挖掘研究院
#endregion 数据挖掘研究院
//将WordDoc文档对象的内容保存为DOC文档
myWordDocSaveAs(ref strFileName, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
//关闭WordDoc文档对象
myWordDocClose(ref Nothing, ref Nothing, ref Nothing);
//关闭WordApp组件对象
myWordAppQuit(ref Nothing, ref Nothing, ref Nothing);
数据挖掘研究院
thisrichTextBox1Text = strFileName + " " + "创建成功";
数据挖掘实验室
}
private void openWord()
{
fontDialog1ShowDialog();
SystemDrawingFont font = fontDialog1Font;
object filepath = "D:\aspdocx";
object oMissing = SystemReflectionMissingValue;
myWordDoc = myWordAppDocumentsOpen(ref filepath, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 数据挖掘研究院
myWordDocContentFontSize = fontSize;
myWordDocContentFontName = fontName;
myWordDocSave();
richTextBox1Text = myWordDocContentText;
myWordDocClose(ref oMissing, ref oMissing, ref oMissing);
myWordAppQuit(ref oMissing, ref oMissing, ref oMissing);
} 数据挖掘研究院
}
数据挖掘研究院
>OpenOffice java api:
简单的说就是利用java程序可以 *** 作OpenOffice的所有功能,比如创建doc文档,插入文字,设置文字格式等等。
1 OpenOffice 给程序员提供了一个叫UNO (UniversalNetwork Objects)的组件技术我理解的UNO: OpenOffice 类似于web程序中的服务器,程序员写的代码类似于客户端,利用UNO提供的接口和服务去完成对OpenOffice文档的 *** 作。所以写程序首先要搭建 UNO环境:
1 下载 OpenOffice
2复制UNO提供的jar包: unoiljar, java_unojar, juhjar, jurtjar, ridljar, unoloaderjar (ps: 安装了SDK之后在文件夹找)到自己的工程中,引入它们。
3 下载文档:DevelopersGuidepdf
4 安装了SDK后,重新启动一下机器,然后就可以按照 DevelopersGuide 来学习 UNO 编程了。
5 需要ava 环境。
补充: 安装了SDK后, java, c++帮助文档,样例程序,其他关于sdk的信息 都放在本地openOffice安装路径一个叫sdk目录下面,enjoy it !
总结一下已经实现的功能和碰到的问题汇总:
1 首先要得到远程office组件的上下文通过:
comsunstarunoXComponentContext xContext = comsunstarcomphelperBootstrapbootstrap();
得到,如果OpenOffice安装路径不是在工程的路径下面(我自己猜的), 就会报:
comsunstarcomphelperBootstrapException: no office executable found!
解决办法: 黑其源代码, 看了源代码就会发现其实OpenOffice是在寻找本地的soffice的shell文件,所以弄个变量来保存soffice在系统中的路径,重新写一 个Bootstrap就可以了。详细请参照:论坛 。
2 得到 XMultiComponentFactory (ComponentFactory 工厂)
comsunstarlangXMultiComponentFactory xMCF = xContextgetServiceManager();
3 得到各种组件可以通过下面代码:
// docType 是 与 soffice 同目录下面的OpenOffice的其他shell文件,swrite等等
protected XComponent newDocComponent(String docType)
throws javalangException {
String loadUrl = "private:factory/" + docType;

mxRemoteServiceManager = thisgetRemoteServiceManager();
Object desktop = mxRemoteServiceManagercreateInstanceWithContext(
"comsunstarframeDesktop", mxRemoteContext);

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

return xComponentLoaderloadComponentFromURL(loadUrl, "_blank", 0,
loadProps);
}
4得到 XTextDocument
XComponent xEmptyWriterComponent = newDocComponent("swriter");
XTextDocument mxDoc = (XTextDocument) UnoRuntimequeryInterface(XTextDocumentclass,
xEmptyWriterComponent);
5 得到一个文档的引用
XText mxDocText = mxDocgetText();
6 得到文档的属性列表
XPropertySet mxDocProps = (XPropertySet) UnoRuntimequeryInterface(
XPropertySetclass, mxDoc);
7 建立光标,用来插入新的内容。
XTextCursor mxDocCursor = mxDocTextcreateTextCursor();
XSentenceCursor xSentenceCursor = (XSentenceCursor) UnoRuntime
queryInterface(XSentenceCursorclass, mxDocCursor);

XWordCursor xWordCursor = (XWordCursor) UnoRuntimequeryInterface(
XWordCursorclass, mxDocCursor);
8得到光标属性列表
XPropertySet xCursorProps = (XPropertySet) UnoRuntime queryInterface(XPropertySetclass, mxDocCursor);
9设置插入文字格式
xCursorPropssetPropertyValue("CharFontName", "宋体");
xCursorPropssetPropertyValue("CharWeight", new Float(FontWeightBOLD));
xCursorPropssetPropertyValue("CharHeight", new Float(105));
// 居中显示
xCursorPropssetPropertyValue("ParaAdjust", comsunstarstyleParagraphAdjustCENTER);
10在该光标处插入信息
mxDocTextinsertString(xSentenceCursor, “Hello World", true);
11 保存的关键代码
protected void storeDocComponent(XComponent xDoc, String storeUrl)
throws javalangException {
XStorable xStorable = (XStorable) UnoRuntimequeryInterface(
XStorableclass, xDoc);
PropertyValue[] storeProps = new PropertyValue[1];
storeProps[0] = new PropertyValue();
storeProps[0]Name = "FilterName";
storeProps[0]Value = "MS Word 97";
openOfficeJavaLoggerdebug(" store \"" + xDoctoString() + "\" to \"" + storeUrl
+ "\"");
xStorablestoreAsURL(storeUrl, storeProps);
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12610395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存