亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Syncfusion Essential DocIO操作word文件實用函數

2019-11-17 03:49:44
字體:
來源:轉載
供稿:網友
Essential DocIO

.NET庫,能夠讀寫Microsoft Word文件。該組件是一個對象模型,同Microsoft Office COM類庫相似,它不采用COM interop,以C#編寫。如果系統內沒有安裝Microsoft Word,可以考慮該組件。

創建新的MS Word文檔:支持創建包含文本、圖片、圖表、頁面和頁腳的MS Word文檔。

文檔格式化:支持格式化為通用的MS Word 報告。

文檔生成基于模板:基于模板生成文檔,可以使用MS Word GUI設計文檔報告,然后使用DocIO向模板文件內動態填充數據。

文檔屬性:讀寫Word文檔的屬性設置。

轉換:支持使用Essential PDF將MS Word文檔轉換為PDF。

高級特性:支持復制和合并多個MS Word文檔為單個文檔。
轉換HTML到word
        public static byte[] ConvertHtmlToDoc(string html)
        {
            var document = new WordDocument();
            IWSection section = document.AddSection();
            IWParagraph para = section.AddParagraph();
            
            string errorMessage = "";
            bool valid = section.Body.IsValidXHTML(html, XHTMLValidationType.Strict, out errorMessage);
            if (!valid)
                throw new InvalidCastException(errorMessage + "<hr>" + html) ;
            document.XHTMLValidateOption = XHTMLValidationType.Strict;
            section.Body.InsertXHTML(html);
            var outMem = new MemoryStream();

            document.Save(outMem, FormatType.Doc);
            outMem.Seek(0, SeekOrigin.Begin);
            var content = new byte[outMem.Length];
            outMem.Read(content, 0, content.Length);
            outMem.Dispose();
            document.Close();
            return content;
        }


生成Word的時候替換指定的文字
        /// <summary>
        /// 生成Word的時候替換指定的文字
        /// </summary>
        /// <param name="templatePath"></param>
        /// <param name="FileName"></param>
        /// <param name="replaysDictionary"></param>
        public static void ReplaceDocContent(string templateFileName, string newFileName,
                                             Dictionary<string, string> replaysDictionary)
        {
            IWordDocument document = new WordDocument();
            document.Open(templateFileName, FormatType.Doc);
            foreach (var rd in replaysDictionary)
            {
                if (string.IsNullOrEmpty(document.GetText())) continue;

                document.Replace(rd.Key, rd.Value, false, false);
                while (document.GetText().IndexOf(rd.Key) != -1)
                    document.Replace(rd.Key, rd.Value, false, false);
            }
            document.Save(newFileName, FormatType.Doc);
        }


給文檔加密碼保護
        public static Stream SetDocPRotect(byte[] docContent, string key)
        {
            var mem = new MemoryStream(docContent);
            mem.Seek(0, SeekOrigin.Begin);

            IWordDocument document = new WordDocument(mem, FormatType.Automatic);
            document.Protect(ProtectionType.AllowOnlyFormFields, key);
            var outMem = new MemoryStream();
            document.Save(outMem, FormatType.Doc);
            outMem.Seek(0, SeekOrigin.Begin);
            return outMem;
        }


在書簽位置創建一個表格
        public static IWTable ReplaceTable(WordDocument document, string bookmarkName, DataTable data, string mergeColName , List<List<string>> mutilTableCaption)
        {
            if (document == null) throw new ArgumentNullException("document");
            if (bookmarkName == null) throw new ArgumentNullException("bookmarkName");
            if (data == null) throw new ArgumentNullException("data");
            if (data.Columns.Count < 1) throw new ArgumentNullException("data");
            
            int captionCount = mutilTableCaption != null && mutilTableCaption.Count > 0 ? mutilTableCaption.Count : 1;
            WTable table = new WTable(document, true);

            table.ResetCells(data.Rows.Count + captionCount, data.Columns.Count);

            for (var colCount = 0; colCount < captionCount; colCount++)
            {
                for (var col = 0; col < data.Columns.Count; col++)
                {
                    var paragraph = table.Rows[colCount].Cells[col].AddParagraph();

                    var caption = data.Columns[col].ColumnName;
                    if (mutilTableCaption != null && mutilTableCaption.Count > 0)
                        caption = mutilTableCaption[colCount][col];
                    var text = paragraph.AppendText(caption);
                    paragraph.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Center;
                    text.CharacterFormat.FontName = "宋體";
                    text.CharacterFormat.Bold = false;
                    text.CharacterFormat.FontSize = 10.5f;
                }
            }

            for (var row = captionCount; row <= data.Rows.Count; row++)
                for (var col = 0; col < data.Columns.Count; col++)
                {
                    var paragraph = table.Rows[row].Cells[col].AddParagraph();
                    var text = paragraph.AppendText(data.Rows[row - captionCount][col] + "");

                    text.CharacterFormat.FontName = "宋體";
                    text.CharacterFormat.FontSize = 9f;
                    double val = 0;
                    if (double.TryParse(text.Text, out val))
                    {
                        text.Text = Math.Round(val, 2) + "";
                        //align right
                        paragraph.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Right;
                        table.Rows[row].Cells[col].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
                        table.Rows[row].Cells[col].CellFormat.TextWrap = false;
                    }
                }
            //合并單元格,向下合并
            if (!string.IsNullOrEmpty(mergeColName))
                for (var row = captionCount; row < table.Rows.Count; row++)
                {
                    var cell = table.Rows[row].Cells[data.Columns[mergeColName].Ordinal];
                    cell.CellFormat.VerticalMerge = CellMerge.Start;
                    var text = data.Rows[row - captionCount][mergeColName] + "";
                    if (row > captionCount)
                    {
                        var priorCell = table.Rows[row - captionCount].Cells[data.Columns[mergeColName].Ordinal];
                        var findText = data.Rows[row - captionCount - 1][mergeColName] + "";
                        if (text.Equals(findText))
                            cell.CellFormat.VerticalMerge = CellMerge.Continue;
                    }
                }

            BookmarksNavigator bk = new BookmarksNavigator(document);
            bk.MoveToBookmark(bookmarkName);

            TextBodyPart body= bk.GetBookmarkContent();
            bk.DeleteBookmarkContent(true);

            bk.InsertTable(table);
            return table;
        }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产一区二区三区| 国产精品com| 97在线视频观看| 久久精彩免费视频| 欧美与欧洲交xxxx免费观看| 国产一区二区视频在线观看| 成人免费激情视频| 国产精品久久久久久久久久久久久| 久久色在线播放| 欧美有码在线观看视频| 日韩欧美在线播放| 国产va免费精品高清在线观看| 97国产在线观看| 亚洲人线精品午夜| 国产精品电影网| 日韩激情视频在线播放| 美女少妇精品视频| 国产精品一区二区av影院萌芽| 亚洲激情自拍图| 成人动漫网站在线观看| 日韩成人性视频| 欧美有码在线观看| 欧美成人激情在线| 亚洲福利小视频| 九九视频这里只有精品| 色综合天天狠天天透天天伊人| 最近2019年日本中文免费字幕| 久久久久久这里只有精品| 九九九热精品免费视频观看网站| 国产色综合天天综合网| 欧美第一页在线| 国产亚洲a∨片在线观看| 日韩中文字幕不卡视频| 久久人人97超碰精品888| 久久青草精品视频免费观看| 亚洲女人天堂视频| 国产精品一区av| 亚洲电影免费在线观看| 精品国产欧美一区二区五十路| 国产精品免费视频xxxx| 奇米4444一区二区三区| 亚洲男女自偷自拍图片另类| 亚洲精品一二区| 国产精品久久久久久久9999| 久久久久成人精品| 另类天堂视频在线观看| 5566日本婷婷色中文字幕97| 欧美黄色免费网站| 欧美精品在线网站| 亚洲精品videossex少妇| www.99久久热国产日韩欧美.com| 国产成人精品综合| 国产精品美女免费| 亚洲国产又黄又爽女人高潮的| 91视频88av| 日韩小视频在线观看| 日韩国产精品视频| 国模精品系列视频| 国产精品综合久久久| 国产噜噜噜噜噜久久久久久久久| 激情成人在线视频| 91精品一区二区| 亚洲一区二区三区久久| 在线亚洲欧美视频| 欧美日韩裸体免费视频| 在线日韩精品视频| 亚洲国产精品va| 亚洲最新中文字幕| 日韩精品免费在线播放| 亚洲香蕉成人av网站在线观看| 国产精品大陆在线观看| 国产一区二区三区在线视频| 精品国产欧美一区二区三区成人| 77777少妇光屁股久久一区| 91九色国产社区在线观看| 亚洲国内精品视频| 91视频-88av| 91黑丝高跟在线| 国产精品欧美一区二区| 91色视频在线观看| 91丨九色丨国产在线| 九九九久久国产免费| 不卡在线观看电视剧完整版| 国产精品久久久久久久9999| 亚洲视频在线观看| 亚洲成人久久久| 伊人久久男人天堂| 亚洲精品黄网在线观看| 欧美另类第一页| 精品少妇v888av| 国产精品27p| 亚洲精品久久久久国产| 高跟丝袜欧美一区| 亚洲国产精品推荐| 日韩女优人人人人射在线视频| 亚洲成人激情在线| 日韩美女写真福利在线观看| 在线电影中文日韩| 国产成人免费av电影| 精品在线观看国产| 日韩精品在线私人| 久久99热精品| 国内精品一区二区三区| 国产美女精彩久久| 日韩在线观看免费全集电视剧网站| 中文字幕亚洲欧美| 亚洲欧美日韩国产精品| 亚洲精品福利在线| 亚洲深夜福利视频| 91精品国产91久久久久久最新| 中文字幕亚洲无线码a| 欧美精品精品精品精品免费| 国产91ⅴ在线精品免费观看| 国产成人综合一区二区三区| 九九热精品在线| 国内精品久久久久影院 日本资源| 色系列之999| 日韩欧美有码在线| 精品偷拍各种wc美女嘘嘘| 亚洲毛茸茸少妇高潮呻吟| 欧美激情精品久久久久久变态| 亚洲日本aⅴ片在线观看香蕉| 欧美性极品少妇精品网站| 亚洲国产成人爱av在线播放| 久久伊人91精品综合网站| 亚洲成年人影院在线| 久久九九全国免费精品观看| 78色国产精品| 中文日韩在线观看| 久久天天躁夜夜躁狠狠躁2022| 日韩在线观看免费av| 亚洲男人第一网站| 成人福利网站在线观看| 日韩成人中文字幕| 亚洲成成品网站| 亚洲人成77777在线观看网| 国产精品视频中文字幕91| 久久久久久国产| 亚洲国产一区自拍| 亚洲综合中文字幕在线| 亚洲人高潮女人毛茸茸| 日韩电影免费观看中文字幕| 国产亚洲欧洲高清一区| 亚洲最新视频在线| 亚洲综合中文字幕68页| 久久精品91久久香蕉加勒比| 久久99精品国产99久久6尤物| 欧美与欧洲交xxxx免费观看| 国产精品久久国产精品99gif| 成人做爽爽免费视频| 久久伊人精品天天| 亚洲人成亚洲人成在线观看| 欧美成人午夜激情视频| 国产成人精品999| 精品人伦一区二区三区蜜桃网站| 亚洲国产欧美自拍| 精品欧美激情精品一区| 精品偷拍一区二区三区在线看| 亚洲香蕉av在线一区二区三区| 国产欧美一区二区三区四区| 孩xxxx性bbbb欧美| 国产最新精品视频| 日本精品久久久| 国产一区二区三区欧美|