<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      實(shí)際工作中,往往有這樣的需求,需要導(dǎo)出word,還有各種各樣的樣式,于是有了word模板導(dǎo)出。

      實(shí)現(xiàn)以下幾個(gè)需求:

      1、表單導(dǎo)出

      2、表格導(dǎo)出

      3、表單表格混合導(dǎo)出

      4、實(shí)際用例測(cè)試

      解決方案:

      實(shí)現(xiàn)是基于NET Core 2.1
      ,搜索了各個(gè)開源項(xiàng)目最終基于DocX這個(gè)開源庫,當(dāng)初實(shí)現(xiàn)時(shí)發(fā)現(xiàn)DocX作者并沒有發(fā)布Core的版本,最后在Nuget搜索到DocXCore這個(gè)包,但是沒有GitHub搜索到這個(gè)庫。


      上面還遇到一個(gè)坑爹的問題,系統(tǒng)在win運(yùn)行沒問題,一部署到centos導(dǎo)出就掛了,根據(jù)錯(cuò)誤研究發(fā)現(xiàn)里面居然要獲取當(dāng)前登錄的用戶信息,win系統(tǒng)沒有問題,centos報(bào)錯(cuò),于是去掉獲取系統(tǒng)用戶這塊,居然沒有源碼。

      一怒之下,反編譯了DocXCore包,移除了獲取登錄系統(tǒng)代碼,最終win和centos都導(dǎo)出正常。

      奉上源碼地址:https://github.com/deeround/DocXCore
      <https://github.com/deeround/DocXCore>

      1、表單導(dǎo)出

      模板



      ?

      代碼
      1 public class FormTest 2 { 3 public static void Test() 4 { 5
      Console.WriteLine($"表單"); 6 Stopwatch sw = new Stopwatch(); 7 Dictionary<
      string, object> data = new Dictionary<string, object>() 8 { 9 { "xmmc","
      測(cè)試姓名測(cè)試姓名111"}, 10 { "sqje","1417.4"}, 11 { "xmdw","博客園Deeround"}, 12 { "glfs","
      自行管理方式"}, 13 { "xmgk","博客園Deeround來函申請(qǐng)辦理
      應(yīng)急搶險(xiǎn)治理工程項(xiàng)目竣工結(jié)(決)算,該項(xiàng)目已完工并通過項(xiàng)目初步驗(yàn)收,現(xiàn)擬按程序采取政府購(gòu)買服務(wù)方式開展評(píng)審"}, 14 { "psyj",""}, 15 { "
      gzyq", @"(一)對(duì)建設(shè)程序進(jìn)行評(píng)審,包括可行性研究報(bào)告、初步設(shè)計(jì)等批準(zhǔn)文件的程序性審查。 16 (二)對(duì)建設(shè)規(guī)模、建設(shè)標(biāo)準(zhǔn)、可研執(zhí)行情況等進(jìn)行評(píng)審。
      17 (三)對(duì)工程投資進(jìn)行評(píng)審,包括工程計(jì)量、定額選用、材料價(jià)格及費(fèi)用標(biāo)準(zhǔn)等的評(píng)審。 18
      (四)對(duì)設(shè)施設(shè)備資進(jìn)行評(píng)審,包括設(shè)施設(shè)備型號(hào)、規(guī)格、數(shù)量及價(jià)格的評(píng)審。19 "}, 20 { "wcsx","1.
      收到委托書后在10天內(nèi)報(bào)送評(píng)審方案,評(píng)審?fù)瓿珊笮杼峤辉u(píng)審報(bào)告紙質(zhì)件7份及電子文檔。"}, 21 { "ywcs","伯爵二元"}, 22 { "lxr","
      千年 12345678"}, 23 }; 24 25 sw.Start(); 26 string root =
      System.AppDomain.CurrentDomain.BaseDirectory;27 WordHelper.Export(root +
      Path.Combine("Templates", "temp_form.docx"), root + "temp_form_out.docx", data);
      28 sw.Stop(); 29 var time = sw.ElapsedMilliseconds; 30 Console.WriteLine($"
      耗時(shí):{time}毫秒"); 31 } 32 }
      最終效果



      ?2、表格導(dǎo)出

      模板



      ?

      ?

      ?代碼
      1 public class TableListTest 2 { 3 public static void Test(int count = 10)
      4 { 5 Console.WriteLine($"表格"); 6 Stopwatch sw = new Stopwatch(); 7
      IList<Dictionary<string, object>> data = new List<Dictionary<string, object>>();
      8 for (int i = 0; i < count; i++) 9 { 10 Dictionary<string, object> d = new
      Dictionary<string, object>() 11 { 12 { "xm","測(cè)試"+i.ToString()}, 13 { "nl",i},
      14 { "xb","男"} 15 }; 16 data.Add(d); 17 } 18 19 Dictionary<string, object>
      data1 =new Dictionary<string, object>(); 20 data1.Add("list", data); 21
      sw.Start();22 string root = System.AppDomain.CurrentDomain.BaseDirectory; 23
      WordHelper.Export(root + Path.Combine("Templates", "temp_table_list.docx"),
      root +"temp_table_list_out.docx", data1); 24 sw.Stop(); 25 var time =
      sw.ElapsedMilliseconds;26 Console.WriteLine($"耗時(shí):{time}毫秒"); 27 } 28 }
      ?

      最終效果



      ?

      ?

      ?3、表單表格混合導(dǎo)出

      模板



      ?

      ?

      ?代碼
      1 public class FormTableTest 2 { 3 public static void Test() 4 { 5
      Console.WriteLine($"表單表格混合"); 6 Stopwatch sw = new Stopwatch(); 7 Dictionary<
      string, object> data = new Dictionary<string, object>() 8 { 9 { "xmmc","
      測(cè)試姓名測(cè)試姓名111"}, 10 { "sqje","1417.4"}, 11 { "xmdw","博客園Deeround"}, 12 { "glfs","
      自行管理方式"}, 13 { "xmgk","博客園Deeround來函申請(qǐng)辦理
      應(yīng)急搶險(xiǎn)治理工程項(xiàng)目竣工結(jié)(決)算,該項(xiàng)目已完工并通過項(xiàng)目初步驗(yàn)收,現(xiàn)擬按程序采取政府購(gòu)買服務(wù)方式開展評(píng)審"}, 14 { "psyj",""}, 15 { "
      gzyq", @"(一)對(duì)建設(shè)程序進(jìn)行評(píng)審,包括可行性研究報(bào)告、初步設(shè)計(jì)等批準(zhǔn)文件的程序性審查。 16 (二)對(duì)建設(shè)規(guī)模、建設(shè)標(biāo)準(zhǔn)、可研執(zhí)行情況等進(jìn)行評(píng)審。
      17 (三)對(duì)工程投資進(jìn)行評(píng)審,包括工程計(jì)量、定額選用、材料價(jià)格及費(fèi)用標(biāo)準(zhǔn)等的評(píng)審。 18
      (四)對(duì)設(shè)施設(shè)備資進(jìn)行評(píng)審,包括設(shè)施設(shè)備型號(hào)、規(guī)格、數(shù)量及價(jià)格的評(píng)審。19 "}, 20 { "wcsx","1.
      收到委托書后在10天內(nèi)報(bào)送評(píng)審方案,評(píng)審?fù)瓿珊笮杼峤辉u(píng)審報(bào)告紙質(zhì)件7份及電子文檔。"}, 21 { "ywcs","測(cè)試處"}, 22 { "lxr","李
      123456"}, 23 }; 24 //明細(xì)數(shù)據(jù) 25 IList<Dictionary<string, object>> mx = new
      List<Dictionary<string, object>>(); 26 for (int i = 0; i < 10; i++) 27 { 28
      mx.Add(new Dictionary<string, object>() { 29 { "a",i}, 30 { "b","
      項(xiàng)目概況表項(xiàng)目概況表項(xiàng)目概況表項(xiàng)目概況表項(xiàng)目概況表"}, 31 { "c","評(píng)審中"}, 32 }); 33 } 34 data.Add("mx",
      mx);35 sw.Start(); 36 string root =
      System.AppDomain.CurrentDomain.BaseDirectory;37 WordHelper.Export(root +
      Path.Combine("Templates", "temp_form_table.docx"), root + "
      temp_form_table_out.docx", data); 38 sw.Stop(); 39 var time =
      sw.ElapsedMilliseconds;40 Console.WriteLine($"耗時(shí):{time}毫秒"); 41 } 42 }
      最終效果



      4、實(shí)例

      請(qǐng)看源碼

      ?

      簡(jiǎn)單說明:

      采用字符串模板方式替換形式,之前也用過其他方式設(shè)置參數(shù),多多少少會(huì)遇到些坑,還不如自定義字符串靈活。

      #:普通表單關(guān)鍵字使用#包裹

      $:表格關(guān)鍵字使用$包裹,里面使用.分割

      ?

      源碼下載:

      ?DocXCore <https://github.com/deeround/DocXCore>源碼地址:?
      https://github.com/deeround/DocXCore <https://github.com/deeround/DocXCore>

      上面demo源碼:https://files.cnblogs.com/files/deeround/WordExportDemo.zip
      <https://files.cnblogs.com/files/deeround/WordExportDemo.zip>

      ?

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          在线视频第一页 | 乱色精品无码一区二区国产盗 | 大香蕉性爱网 | 亚洲AV成人片在线观看 | 免费在线操逼视频 | 日本无码免费A片无码视频美人J | 国产51精品秘 在线观看 | 赵总极品寻花最新章节更新 | 国产传媒-第1页-MM606-萌萌视频 | 色欲影视插插综合网 |