如何用C#编写,向Word的指定位置插入图片,图片版式要求是嵌入型

kanyong0551 2008-04-24 08:59:14
我的代码如下,可是图片的格式和位置怎么也不对,我想让图片插在数字974后面,另外版式也是不对,,枚举里wdWrapInline和wdWrapNone怎么都是"文字之上"呢?
请问各位大哥,分不多.

private void button2_Click(object sender, EventArgs e)
{
try
{
killWordProcess();//结束WORD进程
Object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */
Object Nothing = System.Reflection.Missing.Value;
Directory.CreateDirectory("C:\\罐笼计算"); //创建文件所在目录
string name = "罐笼计算文档" + DateTime.Now.ToShortDateString() + ".doc";//18:28
object filename = "C:\\罐笼计算\\" + name; //文件保存路径
//创建Word文档
Word._Application WordApp = new Word.ApplicationClass();
Word._Document WordDoc = new Word.DocumentClass();
WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);//出现提示信息,因为前面必须加_
WordDoc.Activate();

Word.Paragraph oPara1;
oPara1 = WordDoc.Content.Paragraphs.Add(ref Nothing);
oPara1.Range.Text = "1.5吨双层四车四绳罐笼计算方法";
//oPara1.Range.Font.Bold = 5;
oPara1.Range.Font.Size = 12;
oPara1.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
oPara1.Range.InsertParagraphAfter();

Word.Paragraph oPara2;
oRng = WordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara2= WordDoc.Content.Paragraphs.Add(ref oRng);
oPara2.Range.Text = "荷重:MG1.7-9B 1.5米固定式矿车单重974kg,4辆矿车总重974";//图片插在这个位置(图片是个乘号)
//oPara2.Range.Font.Bold = 5;
oPara2.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
//oPara2.Range.InsertParagraphAfter();



/**/
//插入图片
string FileName = "F:\\罐笼\\Image\\乘号.JPG";//图片所在路径
object LinkToFile = true;
object SaveWithDocument = true;
//Object abc=WordApp.Selection.Range;
oRng = WordDoc.Paragraphs[2].Range;
//Word.Range wrdpic = WordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;//WordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;//WordDoc.Range(ref WordDoc.Paragraphs[10].Range.End, ref WordDoc.Paragraphs[10].Range.End);//注意Range的用法
WordDoc.Words.Last.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref oRng )
//WordApp.Selection.Bookmarks.get_Item(ref oEndOfDoc).Range.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref oRng);
WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 10f;//图片宽度
WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 10f;//图片高度
//设置图片版式
Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
s.WrapFormat.Type = Word.WdWrapType.wdWrapInline;//.wdWrapNone;//.wdWrapSquare;.wdWrapTopBottom;//.wdWrapTight;//.wdWrapThrough;//


//文件保存
WordDoc.SaveAs(ref filename, 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.Close(ref Nothing, ref Nothing, ref Nothing);
WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
MessageBox.Show(name + "文档生成成功,以保存到C:'\'罐笼计算'\'下");
}
catch
{
MessageBox.Show("文件导出异常!");
}
}
...全文
2405 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习了,现在正需要这个。
顽主 2011-08-31
  • 打赏
  • 举报
回复
不错 正在学习中
fanhy125 2010-01-16
  • 打赏
  • 举报
回复
\(^o^)/~
U2008 2009-07-28
  • 打赏
  • 举报
回复
////设置图片浮于文字之上 - 查阅WdWrapType的相关WdWrapType Enumeration
//cShape.WrapFormat.Type = WdWrapType.wdWrapNone;
//wdWrapInline In line with text.
//wdWrapNone Behind text.
//wdWrapSquare Square.
//wdWrapThrough Through.
//wdWrapTight Tight.
//wdWrapTopBottom Top and bottom.

cShape.LockAnchor = 0;
cShape.WrapFormat.Side = WdWrapSideType.wdWrapBoth;

////设置图片浮于文字之上 - 查阅WdWrapType的相关WdWrapType Enumeration
cShape.ZOrder(Microsoft.Office.Core.MsoZOrderCmd.msoSendBehindText);
cShape.WrapFormat.Type = WdWrapType.wdWrapNone;
U2008 2009-07-28
  • 打赏
  • 举报
回复

收藏。
LGame 2008-04-25
  • 打赏
  • 举报
回复
学习了
fsjyclb 2008-04-25
  • 打赏
  • 举报
回复
每个都去试,总有一个合适你的^_^
kanyong0551 2008-04-24
  • 打赏
  • 举报
回复
wdWrapInline In line with text.
wdWrapNone Behind text.
wdWrapSquare Square.
wdWrapThrough Through.
wdWrapTight Tight.
wdWrapTopBottom Top and bottom.
我的研究结果是wdWrapInline 和wdWrapNone 是一样的.
fsjyclb 2008-04-24
  • 打赏
  • 举报
回复
http://msdn2.microsoft.com/zh-cn/library/microsoft.office.interop.word.wdwraptype(VS.80).aspx
参考一下这个,我觉得应该是wdWrapTopBottom。
懒牛科技 2008-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jacksonjian 的回复:]
帮顶!
[/Quote]
kanyong0551 2008-04-24
  • 打赏
  • 举报
回复
我的电脑里的word是2003的.
阿建像熊猫 2008-04-24
  • 打赏
  • 举报
回复
帮顶!

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧