由于wps可以兼容word并且可以导出成pdf,而且体积小,所以开发环境采用vs2005+wps2009,利用剪切板的复制粘帖将RichTextBox中的内容导入到word中,具体见代码:
WPS.Application WPSApp = new WPS.ApplicationClass();
//模板文件
string TemplateFile = Application.StartupPath + "//template.doc";
//生成的具有模板样式的新文件
fileName = DateTime.Now.ToString("yyyyMMddHHmmssfffffff");
string filePath = Application.StartupPath + "//" + fileName + ".wps";
object wordFilePath = TemplateFile;
object Visible = false;
object ReadOnly = false;
object missing = System.Reflection.Missing.Value;
try
{
//打开文件
WPS.Document WPSDocument = WPSApp.Documents.Add(ref wordFilePath, false, 0, false);
toolStripProgressBar1.Maximum = WPSDocument.Bookmarks.Count;
int i = 0;
foreach (WPS.Bookmark bm in WPSDocument.Bookmarks)
{
if(bm.Name.Equals("tbyq"))
{
RichTextBox rtb = new RichTextBox();
rtb.LoadFile(Application.StartupPath + "//tmp.rtf");
richTextBox1.SelectAll();
richTextBox1.Copy();
bm.Range.Paste();
}
else{
bm.Select();
bm.Range.Text = this.getValue(bm.Name);
}
toolStripProgressBar1.Value = i++;
}
object save = true;
object fileFormat = 0;
WPSDocument.SaveAs(filePath,ref fileFormat, false, string.Empty, false,
string.Empty,false, true, true,
true, true, 0, true, true, 0, true);
}
finally
{
object save = false;
WPSApp.Quit(ref save, ref missing, ref missing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(WPSApp);
foreach (Process thisproc in Process.GetProcessesByName("wps"))//便利winword的进程名
{
thisproc.Kill();//强行关闭进程
}
}
本文介绍了一种使用VS2005和WPS2009将RichTextBox内容导入Word并保存为WPS文档的方法。通过代码示例展示了如何通过剪贴板实现富文本数据的复制粘贴,以及如何利用WPS应用程序对象模型来操作文档。
157

被折叠的 条评论
为什么被折叠?



