1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C# 读取Excel文件 并写入word模板文档

C# 读取Excel文件 并写入word模板文档

时间:2022-08-10 19:31:14

相关推荐

C# 读取Excel文件 并写入word模板文档

1.该程序是一个win32控制台程序

2.开发工具是VS,office是版的

3.需要添加以下引用

4 在C盘保存.dot模板,样式如下

6.excel中的数据格式,最好都设置为常规。

具体的代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Data.OleDb;using System.Drawing;using Microsoft.Office.Interop.Word;using Microsoft.Office.Interop.Excel;namespace ReadANDWrite{class Program{//读取EXCEL数据public System.Data.DataTable LoadDataFromExcel(string Path){string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + Path + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";OleDbConnection conn = new OleDbConnection(strConn);conn.Open();string strExcel = "";OleDbDataAdapter myCommand = null;System.Data.DataTable dt = null;strExcel = "select * from [sheet1$]";myCommand = new OleDbDataAdapter(strExcel, strConn);dt = new System.Data.DataTable();myCommand.Fill(dt);return dt;}// 写入word 模板public void WriteDataTOword(System.Data.DataTable dt, System.Data.DataTable dt1, System.Data.DataTable dt2, System.Data.DataTable dt3,string [] sstr){object oMissing = System.Reflection.Missing.Value;//创建一个Word应用程序实例Microsoft.Office.Interop.Word._Application oWord = new Microsoft.Office.Interop.Word.Application();//设置为不可见oWord.Visible = false;//模板文件地址,这里假设在X盘根目录object oTemplate = "C://template11.dot";//以模板为基础生成文档Microsoft.Office.Interop.Word._Document oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);//声明书签数组object[] oBookMark = new object[20];//赋值书签名oBookMark[0] = "name";oBookMark[1] = "sex";oBookMark[2] = "people";oBookMark[3] = "jiguan";oBookMark[4] = "birth";oBookMark[5] = "zzmm";oBookMark[6] = "cjgzsj";oBookMark[7] = "whcd";oBookMark[8] = "byyx";oBookMark[9] = "major";// oBookMark[10] = "graduate";oBookMark[11] = "scgwpyqzw";oBookMark[12] = "prsj";oBookMark[13] = "kh1";oBookMark[14] = "kh2";oBookMark[15] = "kh3";oBookMark[16] = "xpgw";oBookMark[17] = "xpgwdj";oBookMark[18] = "npgw";oBookMark[19] = "npgwdj";////赋值任意数据到书签的位置//for (int i = 0; i < 20;++i )//{// oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = dt.Rows[i][0].ToString();//}oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = sstr[1];oDoc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = sstr[2];oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = sstr[3];oDoc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text = sstr[4];oDoc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text = sstr[5];oDoc.Bookmarks.get_Item(ref oBookMark[5]).Range.Text = sstr[6];oDoc.Bookmarks.get_Item(ref oBookMark[6]).Range.Text = sstr[7];oDoc.Bookmarks.get_Item(ref oBookMark[7]).Range.Text = sstr[8];oDoc.Bookmarks.get_Item(ref oBookMark[8]).Range.Text = sstr[9];oDoc.Bookmarks.get_Item(ref oBookMark[9]).Range.Text = sstr[10];oDoc.Bookmarks.get_Item(ref oBookMark[10]).Range.Text = sstr[11];oDoc.Bookmarks.get_Item(ref oBookMark[11]).Range.Text = sstr[12];oDoc.Bookmarks.get_Item(ref oBookMark[12]).Range.Text = sstr[13];string[] str1 = new string[3];string ss1,ss2,ss3;////for (int i = 0; i < 193; i++){ss1 = dt1.Rows[i][1].ToString();if (sstr[1] == dt1.Rows[i][1].ToString()) //若名字相同{str1[0] = dt1.Rows[i][6].ToString();break;}}//for (int i = 0; i < 182; i++){ss2 = dt2.Rows[i][1].ToString();if (sstr[1] == dt2.Rows[i][1].ToString()) //若名字相同{str1[1] = dt2.Rows[i][6].ToString();break;}}//for (int i = 0; i < 189; i++){ss3 = dt3.Rows[i][1].ToString();if (sstr[1] == dt3.Rows[i][1].ToString()) //若名字相同{str1[2] = dt3.Rows[i][6].ToString();break;}}oDoc.Bookmarks.get_Item(ref oBookMark[13]).Range.Text = str1[0];oDoc.Bookmarks.get_Item(ref oBookMark[14]).Range.Text = str1[1];oDoc.Bookmarks.get_Item(ref oBookMark[15]).Range.Text = str1[2];for (int i = 0; i < 3;i++ ) //清空考核 {str1[i] = "";}////oDoc.Bookmarks.get_Item(ref oBookMark[16]).Range.Text = dt.Rows[0][0].ToString();//oDoc.Bookmarks.get_Item(ref oBookMark[17]).Range.Text = dt.Rows[0][0].ToString();//oDoc.Bookmarks.get_Item(ref oBookMark[18]).Range.Text = dt.Rows[0][0].ToString();//oDoc.Bookmarks.get_Item(ref oBookMark[19]).Range.Text = dt.Rows[0][0].ToString();//保存生成的Wordobject filename ="C:\\Users\\LV\\Desktop\\temp\\"+ sstr[1]+"-xx单位";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);//关闭wordoWord.Quit(ref oMissing, ref oMissing, ref oMissing);}static void Main(string[] args){Program p = new Program();System.Data.DataTable dt = p.LoadDataFromExcel("C:\\Users\\administrator\\Desktop\\花名册111.xls");System.Data.DataTable dt1 = p.LoadDataFromExcel("C:\\Users\\administrator\\Desktop\\14考核表.xls"); System.Data.DataTable dt2 = p.LoadDataFromExcel("C:\\Users\\administrator\\Desktop\\15考核表.xls");System.Data.DataTable dt3 = p.LoadDataFromExcel("C:\\Users\\administrator\\Desktop\\16考核表.xls");string[] sstr = new string[21]; //定义一个存储输出数据的数组string[] substr=new string[3];System.DateTime currenttime1 = new System.DateTime();currenttime1 = System.DateTime.Now;for (int i = 0; i < 190; i++){ sstr[1] = dt.Rows[i][1].ToString();//姓名sstr[2] = dt.Rows[i][2].ToString();//性别sstr[3] = dt.Rows[i][3].ToString();//民族sstr[4] = dt.Rows[i][5].ToString();//籍贯sstr[5] = dt.Rows[i][25].ToString();//出生年月sstr[6] = dt.Rows[i][6].ToString();//政治面貌sstr[7] = dt.Rows[i][21].ToString();//参加工作时间sstr[8] = dt.Rows[i][8].ToString();// 文化程度//sstr[0]=dt.Rows[i][23].ToString();// 毕业院校substr = sstr[0].Split(',');sstr[9] = substr[0];// 毕业院校sstr[10] = substr[1];// 专业sstr[11] = dt.Rows[i][24].ToString();//毕业时间//sstr[12] = dt.Rows[i][13].ToString();// 首次聘任前职务sstr[13] = dt.Rows[i][14].ToString();// 聘任时间//Console.WriteLine(dt1.Rows[i][0].ToString() + dt1.Rows[i][1].ToString() + dt1.Rows[i][2].ToString() + dt1.Rows[i][3].ToString() + dt1.Rows[i][4].ToString() + dt1.Rows[i][5].ToString());//Console.WriteLine("\n");p.WriteDataTOword(dt,dt1,dt2,dt3,sstr);Console.WriteLine("{0}{1} 输出完毕", dt.Rows[i][0].ToString(),dt.Rows[i][1].ToString());Console.WriteLine("\n");}System.DateTime currenttime2 = new System.DateTime();currenttime2 = System.DateTime.Now;Console.WriteLine("\n");Console.WriteLine("全部输出完毕");Console.WriteLine("开始时间{0}---结束时间{1}", currenttime1,currenttime2);Console.ReadLine();}}}

7运行结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。