zoukankan
html css js c++ java
C#提取Word中的内容并添加到另一人word中(http://blog.eworks.net.cn/147018/articles/7340.html)
using
System;
using
System.Web;
using
System.Text;
using
System.Data;
using
System.Web.UI;
using
System.IO;
using
System.Reflection;
using
System.Collections;
using
System.Runtime.InteropServices;
using
Microsoft.Office.Interop.Word;
namespace
test
{
/**/
///
<summary>
///
WordFile 的摘要说明。
///
</summary>
public
class
WordFile
{
public
WordFile()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
/**/
///
<summary>
///
生成word文档
///
</summary>
///
<param name="template">
模版文件路径
</param>
///
<param name="ht">
书签与内容
</param>
///
<param name="filename">
新文件路径
</param>
public
void
CreateWord(
string
template,
object
filename)
{
Microsoft.Office.Interop.Word.Application wordApp
=
new
Microsoft.Office.Interop.Word.ApplicationClass();
object
missing
=
Type.Missing;
Microsoft.Office.Interop.Word.Document doc
=
OpenDoc(template,
ref
wordApp);
try
{
Microsoft.Office.Interop.Word.Document hdoc
=
OpenDoc(
"
c:\\test\\test.doc
"
,
ref
wordApp);
object
start
=
hdoc.Content.Start;
object
end
=
hdoc.Content.End;
Microsoft.Office.Interop.Word.Range rng
=
hdoc.Range(
ref
start,
ref
end);
rng.Select();
Hashtable ht
=
new
Hashtable();
ht.Add(
"
test
"
,rng.Text);
System.Collections.IDictionaryEnumerator et
=
ht.GetEnumerator();
//
doc.Range(ref start,ref end).Select();
//
doc.Range rng=doc.Content;
//
rng.Select();
/**/
/*
doc.Paragraphs[1].Range.InsertParagraphBefore();
Microsoft.Office.Tools.Word.Bookmark bookmark1 =
doc.Controls.AddBookmark(doc.Paragraphs[1].Range,
"bookmark1");
string FileName = "C:\\Sales.doc";
object ConfirmConversions = false;
object Link = false;
object Attachment = false;
bookmark1.InsertFile(FileName, ref missing, ref ConfirmConversions,
ref Link, ref Attachment);
*/
/**/
//////
while
(et.MoveNext())
{
foreach
(Microsoft.Office.Interop.Word.Bookmark BM
in
doc.Bookmarks)
{
object
oMissing
=
System.Reflection.Missing.Value;
if
(BM.Name
==
et.Key.ToString())
{
BM.Select();
//
查找书签
string
[] arr
=
et.Value.ToString().Split(
'
|
'
);
int
i
=
arr.Length;
if
(arr.Length
==
1
)
{
if
(et.Value.ToString()
==
""
)
{
BM.Range.Text
=
"
无记录
"
;
}
else
{
BM.Range.Text
=
et.Value.ToString();
//
替换书签中的内容
}
}
else
//
连接图片
{
BM.Range.InlineShapes.AddPicture(arr[
1
].ToString(),
ref
oMissing,
ref
oMissing,
ref
oMissing);
}
break
;
}
}
}
}
catch
(System.Exception ee)
{
string
ff
=
ee.ToString();
ff
=
ff;
}
doc.SaveAs(
ref
filename,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing);
doc.Close(
ref
missing,
ref
missing,
ref
missing);
}
/**/
////////////////////////////////////////////////////////////////////////////////////
//////////////////
内部函数
////////////////////////////////////////////////////////////////////////////////////
///
<summary>
///
返回doc对象
///
</summary>
///
<param name="strDocPath">
模版文件路径
</param>
///
<param name="wordApp">
word应用程序
</param>
///
<param name="flag"></param>
///
<returns></returns>
private
Microsoft.Office.Interop.Word.Document OpenDoc(
string
strDocPath,
ref
Microsoft.Office.Interop.Word.Application wordApp)
{
if
(
!
File.Exists(strDocPath))
{
return
null
;
}
object
fileName
=
(
object
)strDocPath;
object
isVisible
=
Type.Missing;
object
readOnly
=
Type.Missing;
object
missing
=
Type.Missing;
wordApp.Visible
=
false
;
Microsoft.Office.Interop.Word.Document doc
=
null
;
try
{
doc
=
wordApp.Documents.Open(
ref
fileName,
ref
missing,
ref
readOnly,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
missing,
ref
isVisible,
ref
missing,
ref
missing,
ref
missing,
ref
missing);
return
doc;
}
catch
(System.Exception e)
{
throw
new
Exception(e.Message);
}
}
}
}
查看全文
相关阅读:
分布式 and 集群
时间复杂度
图
堆
树
线性表 & 散列表
栈 & 队列
数组 & 链表
数据结构&算法
Docket 容器引擎
原文地址:https://www.cnblogs.com/sunheyubo/p/995254.html
最新文章
括号匹配
Java中的异常和处理
求最长连续元音字母字符串的长度
多线程的理解
1891. Travel Plan
Number of Islands
P1123 取数游戏
Longest Increasing Subsequence
从Guarded Block来看Java中的wait和notify方法
Java线程的生命周期
热门文章
线程池中状态与线程数的设计分析(ThreadPoolExecutor中ctl变量)
Java中的位掩码BitMask
理解与使用Treiber Stack
Sonar检测Math.abs(new Random().nextInt()) “Use the original value instead”
JPA使用之@Query的常用写法
理解与解决缓存穿透、缓存击穿、缓存雪崩、热点数据失效问题
先更新缓存还是先更新数据库
JUC并发工具包之CyclicBarrier & CountDownLatch的异同
为什么Java不允许创建范型数组
MySQL常用命令与语句
Copyright © 2011-2022 走看看