由于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();//强行关闭进程
}
}