C# 读取Excel文件,并写入word模板文档
生活随笔
收集整理的這篇文章主要介紹了
C# 读取Excel文件,并写入word模板文档
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.該程序是一個(gè)win32控制臺(tái)程序
2.開發(fā)工具是VS2010,office是2013版的
3.需要添加以下引用
4 在C盤保存.dot模板,樣式如下
6.excel中的數(shù)據(jù)格式,最好都設(shè)置為常規(guī)。
具體的代碼如下:
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數(shù)據(jù)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;//創(chuàng)建一個(gè)Word應(yīng)用程序?qū)嵗?/span>Microsoft.Office.Interop.Word._Application oWord = new Microsoft.Office.Interop.Word.Application();//設(shè)置為不可見oWord.Visible = false;//模板文件地址,這里假設(shè)在X盤根目錄object oTemplate = "C://template11.dot";//以模板為基礎(chǔ)生成文檔Microsoft.Office.Interop.Word._Document oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);//聲明書簽數(shù)組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";////賦值任意數(shù)據(jù)到書簽的位置//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;////2014年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;}}//2015年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;}}//2016年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);//關(guān)閉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\\花名冊(cè)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]; //定義一個(gè)存儲(chǔ)輸出數(shù)據(jù)的數(shù)組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();//參加工作時(shí)間sstr[8] = dt.Rows[i][8].ToString();// 文化程度// sstr[0]=dt.Rows[i][23].ToString();// 畢業(yè)院校substr = sstr[0].Split(',');sstr[9] = substr[0];// 畢業(yè)院校sstr[10] = substr[1];// 專業(yè)sstr[11] = dt.Rows[i][24].ToString();//畢業(yè)時(shí)間// sstr[12] = dt.Rows[i][13].ToString();// 首次聘任前職務(wù)sstr[13] = dt.Rows[i][14].ToString();// 聘任時(shí)間//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("開始時(shí)間{0}---結(jié)束時(shí)間{1}", currenttime1,currenttime2);Console.ReadLine();}} }7運(yùn)行結(jié)果
?
轉(zhuǎn)載于:https://www.cnblogs.com/taxiao-seizetime/p/6709681.html
總結(jié)
以上是生活随笔為你收集整理的C# 读取Excel文件,并写入word模板文档的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ClickHouse之集群搭建以及数据复
- 下一篇: .NET遇上Docker - 使用Doc