如何使用C#生成的java xml生成word文档档

C#简单实现动态数据生成Word文档并保存_C#应用_
C#简单实现动态数据生成Word文档并保存
来源:人气:510
今天正好有人问我,怎么生成一个报表式的文档。
就是文字的样式和位置相对固定不变,只是里面的内容从数据中读取。
我觉得类似这种的一般用第三方报表来做比较简便。但既然要求了Word,只好硬着头皮来。
网上的方法大多数都是从一个GridView或表中获得数据后向Word中添加一个表格。
我们使用Word来实现,方法如下:
1、首先需要向工程中的&引用&加入Word类库的引用(图2)。我是Office 2003。其他版本可能略有不同。在COM里面
2、用Word设计一个模板文档(后缀名*.dot)。(图3)
3、向模板中的需要显示动态内容的地方添加书签。具体方法是。光标落到欲插入内容的地方,选择菜单栏上的&插入&&&〉&书签&(图4)
(图4)在&备注:&的后面添加一个书签,名字叫"beizhu"。书签名字不能以数字开头。
4、完成全部书签的添加,依次应该是:
姓名右侧单元格
性别右侧单元格
生日右侧单元格
籍贯右侧单元格
5、保存这个已完成的模板到任意路径,例如 X:/template.dot
6、在工程的窗体的类中添加引用的命名空间
7、为了省事,直接在窗体的Load事件中加入以下代码。
2 using System.Collections.G
3 using ponentM
4 using System.D
5 using System.D
6 using System.L
7 using System.T
8 using System.Windows.F
9 using Microsoft.Office.Interop.W
11 namespace 生成word文档
public partial class Form1 : Form
public Form1()
InitializeComponent();
Load += Form1_L
void Form1_Load(object sender, EventArgs e)
//**********************************************
//来自博客http://blog.csdn.net/fujie724
//**********************************************
object oMissing = System.Reflection.Missing.V
//创建一个Word应用程序实例
Microsoft.Office.Interop.Word._ oWord = new Microsoft.Office.Interop.Word.Application();
//设置为不可见
oWord.Visible = false;
//模板文件地址,这里假设在X盘根目录
object oTemplate = "d://template.dotx";
//以模板为基础生成文档
Microsoft.Office.Interop.Word._Document oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
//声明书签数组
object[] oBookMark = new object[5];
//赋值书签名
oBookMark[0] = "beizhu";
oBookMark[1] = "name";
oBookMark[2] = "sex";
oBookMark[3] = "birthday";
oBookMark[4] = "hometown";
//赋值任意数据到书签的位置
oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = "使用模板实现Word生成";
oDoc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = "李四";
oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = "女";
oDoc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text = "";
oDoc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text = "贺州";
//弹出保存文件对话框,保存生成的Word
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Word Document(*.doc)|*.doc";
sfd.DefaultExt = "Word Document(*.doc)|*.doc";
if (sfd.ShowDialog() == DialogResult.OK)
object filename = sfd.FileN
oDoc.SaveAs(ref filename, 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);
oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
//关闭word
oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
8、运行后直接弹出保存文件对话框(因为写在了Load事件里)。保存为Doc文档,打开发现效果如下(图5)
至此,大功告成,文档中的内容正是我们所设定的。一个简单而又快捷的固定格式Word文档输出就完成了。
希望对需要的朋友有帮助。
以上完整教程为个人劳动成果,转载请注明出处。谢谢。
优质网站模板浅谈如何使用C#生成WORD文档_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
浅谈如何使用C#生成WORD文档
上传于||文档简介
&&文​章​介​绍​在​V​i​s​u​a​l​ ​S​t​u​d​i​o​ ​.​N​E​T​环​境​下​,​使​用​C​#​生​成​报​表​所​对​应​的​w​o​r​d​文​档​的​方​法​,​利​用​w​o​r​d​文​档​强​大​的​打​印​功​能​实​现​了​对​报​表​信​息​的​打​印​。
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢如何C#操作word模板生成word文档并打开?_百度知道trackbacks-0
阅读: 122 评论: 0 作者:
16:06 记住要引入Word的dll文件 Interop.word.dll在命名空间还有记得加入using System.R//===========开始生成Word文档===============好麻烦呀这段=========&&&&&&& private void button5_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& //==========以下程序来自/kb/316384/zh-cn&&&&&&&&&&& object oMissing = System.Reflection.Missing.V&&&&&&&&&&& object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */&&&&&&&&&&& //==========开始创建一个Word文档==============&&&&&&&&&&& Word._Application oWord = new Word.Application();&&&&&&&&&&& Word._Document oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,ref oMissing, ref oMissing);&&&&&&&&&&& oWord.Visible =&&&&&&&&&&& //在文档开始插入一段信息&&&&&&&&&&& Word.Paragraph oPara1;&&&&&&&&&&& oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);&&&&&&&&&&& oPara1.Range.Text = "TT_Article数据库各表说明";&&&&&&&&&&& oPara1.Range.Font.Bold = 1;&&&&&&&&&&& oPara1.Format.SpaceAfter = 24;&&& //24 pt spacing after paragraph.&&&&&&&&&&& oPara1.Range.InsertParagraphAfter();&&&&&&&&&&& //Insert a paragraph at the end of the document.&&&&&&&&&&& Word.Paragraph oPara2;&&&&&&&&&&& object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).R&&&&&&&&&&& oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);&&&&&&&&&&& oPara2.Range.Text = "Heading 2";&&&&&&&&&&& oPara2.Format.SpaceAfter = 6;&&&&&&&&&&& oPara2.Range.InsertParagraphAfter();&&&&&&&&&&& //Insert another paragraph.&&&&&&&&&&& Word.Paragraph oPara3;&&&&&&&&&&& oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).R&&&&&&&&&&& oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);&&&&&&&&&&& oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:";&&&&&&&&&&& oPara3.Range.Font.Bold = 0;&&&&&&&&&&& oPara3.Format.SpaceAfter = 24;&&&&&&&&&&& oPara3.Range.InsertParagraphAfter();&&&&&&&&&&& //Insert a 3 x 5 table, fill it with data, and make the first row&&&&&&&&&&& //bold and italic.&&&&&&&&&&& Word.Table oT&&&&&&&&&&& Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).R&&&&&&&&&&& oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing);&&&&&&&&&&& oTable.Range.ParagraphFormat.SpaceAfter = 6;&&&&&&&&&&& int r,&&&&&&&&&&& string strT&&&&&&&&&&& for (r = 1; r &= 3; r++)&&&&&&&&&&&&&&& for (c = 1; c &= 5; c++)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& strText = "r" + r + "c" +&&&&&&&&&&&&&&&&&&& oTable.Cell(r, c).Range.Text = strT&&&&&&&&&&&&&&& }&&&&&&&&&&& oTable.Rows[1].Range.Font.Bold = 1;&&&&&&&&&&& oTable.Rows[1].Range.Font.Italic = 1;&&&&&&&&&&& //Add some text after the table.&&&&&&&&&&& Word.Paragraph oPara4;&&&&&&&&&&& oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).R&&&&&&&&&&& oPara4 = oDoc.Content.Paragraphs.Add(ref oRng);&&&&&&&&&&& oPara4.Range.InsertParagraphBefore();&&&&&&&&&&& oPara4.Range.Text = "And here's another table:";&&&&&&&&&&& oPara4.Format.SpaceAfter = 24;&&&&&&&&&&& oPara4.Range.InsertParagraphAfter();&&&&&&&&&&& //Insert a 5 x 2 table, fill it with data, and change the column widths.&&&&&&&&&&& wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).R&&&&&&&&&&& oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing);&&&&&&&&&&& oTable.Range.ParagraphFormat.SpaceAfter = 6;&&&&&&&&&&& for (r = 1; r &= 5; r++)&&&&&&&&&&&&&&& for (c = 1; c &= 2; c++)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& strText = "r" + r + "c" +&&&&&&&&&&&&&&&&&&& oTable.Cell(r, c).Range.Text = strT&&&&&&&&&&&&&&& }&&&&&&&&&&& oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2&&&&&&&&&&& oTable.Columns[2].Width = oWord.InchesToPoints(3);&&&&&&&&&&& //Keep inserting text. When you get to 7 inches from top of the&&&&&&&&&&& //document, insert a hard page break.&&&&&&&&&&& object oP&&&&&&&&&&& double dPos = oWord.InchesToPoints(7);&&&&&&&&&&& oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter();&&&&&&&&&&& do&&&&&&&&&&& {&&&&&&&&&&&&&&& wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).R&&&&&&&&&&&&&&& wrdRng.ParagraphFormat.SpaceAfter = 6;&&&&&&&&&&&&&&& wrdRng.InsertAfter("A line of text");&&&&&&&&&&&&&&& wrdRng.InsertParagraphAfter();&&&&&&&&&&&&&&& oPos = wrdRng.get_Information&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& (Word.WdInformation.wdVerticalPositionRelativeToPage);&&&&&&&&&&& }&&&&&&&&&&& while (dPos &= Convert.ToDouble(oPos));&&&&&&&&&&& object oCollapseEnd = Word.WdCollapseDirection.wdCollapseE&&&&&&&&&&& object oPageBreak = Word.WdBreakType.wdPageB&&&&&&&&&&& wrdRng.Collapse(ref oCollapseEnd);&&&&&&&&&&& wrdRng.InsertBreak(ref oPageBreak);&&&&&&&&&&& wrdRng.Collapse(ref oCollapseEnd);&&&&&&&&&&& wrdRng.InsertAfter("We're now on page 2. Here's my chart:");&&&&&&&&&&& wrdRng.InsertParagraphAfter();&&&&&&&&&&& //Insert a chart.&&&&&&&&&&& Word.InlineShape oS&&&&&&&&&&& object oClassType = "MSGraph.Chart.8";&&&&&&&&&&& wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).R&&&&&&&&&&& oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref oMissing,&&&&&&&&&&&&&&& ref oMissing, ref oMissing, ref oMissing,&&&&&&&&&&&&&&& ref oMissing, ref oMissing, ref oMissing);&&&&&&&&&&& //Demonstrate use of late bound oChart and oChartApp objects to&&&&&&&&&&& //manipulate the chart object with MSGraph.&&&&&&&&&&& object oC&&&&&&&&&&& object oChartA&&&&&&&&&&& oChart = oShape.OLEFormat.O&&&&&&&&&&& oChartApp = oChart.GetType().InvokeMember("Application", BindingFlags.GetProperty, null, oChart, null);&&&&&&&&&&& //Change the chart type to Line.&&&&&&&&&&& object[] Parameters = new Object[1];&&&&&&&&&&& Parameters[0] = 4; //xlLine = 4&&&&&&&&&&& oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty,null, oChart, Parameters);&&&&&&&&&&& //Update the chart image and quit MSGraph.&&&&&&&&&&& oChartApp.GetType().InvokeMember("Update",BindingFlags.InvokeMethod, null, oChartApp, null);&&&&&&&&&&& oChartApp.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, oChartApp, null);&&&&&&&&&&& //... If desired, you can proceed from here using the Microsoft Graph&&&&&&&&&&& //Object model on the oChart and oChartApp objects to make additional&&&&&&&&&&& //changes to the chart.&&&&&&&&&&& //Set the width of the chart.&&&&&&&&&&& oShape.Width = oWord.InchesToPoints(6.25f);&&&&&&&&&&& oShape.Height = oWord.InchesToPoints(3.57f);&&&&&&&&&&& //Add text after the chart.&&&&&&&&&&& wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).R&&&&&&&&&&& wrdRng.InsertParagraphAfter();&&&&&&&&&&& wrdRng.InsertAfter("THE END.");&&&&&&&&&&& //Close this form.&&&&&&&&&&& this.Close();&&&&&&& } 评论: 0  最新新闻:· ( 09:55)· ( 09:52)· ( 09:33)· ( 09:26)· ( 09:24)编辑推荐:网站导航:&&&&&&&&&&&&&&
阅读(...) 评论()编程开发子分类

我要回帖

更多关于 c 生成word文档 的文章

 

随机推荐