Spire.Doc for .NET(1)


簡介:
   Spire.Doc for .NET 是一個專門為開發人員設計的能在任意的 .NET 平台上快速和高質量的創建、讀取、寫入、轉換和打印 word 文檔文件的 .NET 組件。作為一個獨立的 .NET 組件,Spire.Doc for .NET 不必在電腦上安裝微軟 Word 。但是,它卻可以將微軟 Word 文檔創建功能並入任何開發人員的 .NET 應用程序中。

主要優點:

1、不需要安裝 Microsoft Office

相比較於通過 Microsoft Office 自動轉化格式時的不穩定、緩慢和不可擴展,Spire.Doc for .NET 在拋開 Microsoft Office 的束縛后顯得相對獨立,而且其遠勝於 Microsoft Office 的高效性、穩定性和可擴展性也讓開發人員不再束手束腳 。

2、能高質量的轉化文件

通過 Spire.Doc for .NET,開發人員可以將 Word 保存到文本流、保存為 Web 響應,也可以將 Word 轉化為 XML、RTF、EMF、TXT、XPS、EPUB、HTML、SVG,反過來轉化也可以 。同時 Spire.Doc for .NET 也支持將 Word 轉化為 PDF 、HTML 轉化為圖片 。

3、豐富的Word文檔功能支持

Spire.Doc for .NET 的一個最常用的用法就是動態創建Word文檔 。幾乎所有的 Word 文檔元素都得到了  Spire.Doc for .NET 的支持,包括頁面,頁眉、頁腳、腳注部分,段落,列表,表格,文本字段,超鏈接,書簽,評論,圖片,風格,背景設置,打印功能,文檔設置和保護 。此外,圖形對象包括形狀、文本框、圖片、OLE對象和控件也得到支持 。

4、可簡單的處理現有 Word 文檔

Spire.Doc for .NET 可幫助開發人員簡單的處理 Word 文檔,它支持搜索和替換功能、對准、分頁符、填補領域、文件連接、文件拷貝、打印、復雜和深層嵌套的郵件合並等等 。

使用:

通過NuGet獲取 Install-Package Spire.Office

里面包含了Doc,XLS,PDF,EMail、、、等

使用場景,根據模板替換模板里面的數據

1:基類

    /// <summary>
    /// 導出基類
    /// </summary>
    public class ExportBase
    {
        /// <summary>
        /// 根據屬性獲取值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        public string GetValue(string propertyName)
        {
            string value = "";
            try
            {
                if (!string.IsNullOrEmpty(propertyName))
                {
                    var objectValue = this.GetType().GetProperty(propertyName).GetValue(this, null);
                    if (objectValue != null)
                    {
                        value = objectValue.ToString();
                    }
                }
            }
            catch (Exception)
            {
            }
            return value;
        }
        /// <summary>
        /// 根據屬性獲取描述值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        public string GetDescription(string propertyName)
        {
            try
            {
                PropertyInfo item = this.GetType().GetProperty(propertyName);
                string des = ((DescriptionAttribute)Attribute.GetCustomAttribute(item, typeof(DescriptionAttribute))).Description;// 屬性值
                return des;
            }
            catch (Exception)
            {
                return "";
            }
        }
    }

2:實體類

    public class PurchaseContract : ExportBase
    {
        /// <summary>
        /// 甲方
        /// </summary>
        public string PartyA { get; set; }
        /// <summary>
        /// 乙方
        /// </summary>
        public string PartyB { get; set; }
        /// <summary>
        /// 合同編號
        /// </summary>
        public string ContractNo { get; set; }
        /// <summary>
        /// 簽訂地點
        /// </summary>
        public string ContractedAddress { get; set; }
        /// <summary>
        /// 簽訂時間
        /// </summary>
        public string ContractedTime { get; set; }
        /// <summary>
        /// 甲方地址
        /// </summary>
        public string AddressA { get; set; }
        /// <summary>
        /// 乙方地址
        /// </summary>
        public string AddressB { get; set; }
        /// <summary>
        /// 甲方聯系電話
        /// </summary>
        public string PartyAPhone { get; set; }
        /// <summary>
        /// 乙方聯系電話
        /// </summary>
        public string PartyBPhone { get; set; }
        /// <summary>
        /// 甲方開戶行
        /// </summary>
        public string PartyABankName { get; set; }
        /// <summary>
        /// 乙方開戶行
        /// </summary>
        public string PartyBBankName { get; set; }
        /// <summary>
        /// 甲方開戶行賬戶
        /// </summary>
        public string PartyABankAccount { get; set; }
        /// <summary>
        /// 乙方開戶行賬戶
        /// </summary>
        public string PartyBBankAccount { get; set; }
    }

    public class PurchaseContractDetaile : ExportBase
    {
        /// <summary>
        /// 采購單號
        /// </summary>
        public string 采購單號 { get; set; }
        /// <summary>
        /// 產品名稱
        /// </summary>
        public string 品名 { get; set; }
        /// <summary>
        /// SKU
        /// </summary>
        public string SKU { get; set; }
        /// <summary>
        /// 產品描述
        /// </summary>
        public string 產品描述 { get; set; }
        /// <summary>
        /// 單位
        /// </summary>
        public string 單位 { get; set; }
        /// <summary>
        /// 數量
        /// </summary>
        public int 數量 { get; set; }
        /// <summary>
        /// 單價
        /// </summary>
        public decimal? 單價 { get; set; }
        /// <summary>
        /// 采購成本
        /// </summary>
        public decimal? 采購成本 { get; set; }
        /// <summary>
        /// 金額
        /// </summary>
        public decimal? 金額 { get; set; }
        /// <summary>
        /// 稅額
        /// </summary>
        public decimal? 稅金 { get; set; }
        /// <summary>
        /// 價稅合計
        /// </summary>
        public decimal? 價稅合計 { get; set; }

        public void SetTaxValue(bool IsTax)
        {
            try
            {
                if (單價.HasValue)
                {
                    單價 = Math.Round(單價.Value, 2);
                }
                if (金額.HasValue)
                {
                    金額 = Math.Round(金額.Value, 2);
                }
            }
            catch (Exception)
            {

            }
        }
    }

3:替換模板

    public static class SpireWord
    {
        static Document document = new Document();
        /// <summary>
        /// 獲取模板
        /// </summary>
        public static void GetDocument()
        {
            try
            {
                string wordTemplatePath = AppDomain.CurrentDomain.BaseDirectory + "\\TemplateExport\\ContractTemplate.docx";
                document.LoadFromFile(wordTemplatePath);
            }
            catch (Exception ex)
            {
                string errorMsg = ex.Message;
                throw;
            }
        }
        public static void CreateNewWord()
        {
            document.SaveToFile("Replace.docx", FileFormat.Docx);
        }
        /// <summary>
        /// 替換模板
        /// </summary>
        /// <param name="purchaseContract"></param>
        public static void ReplaseTemplateWord(PurchaseContract purchaseContract)
        {
            try
            {
                foreach (System.Reflection.PropertyInfo p in purchaseContract.GetType().GetProperties())
                {
                    Console.WriteLine("Name:{0} Value:{1}", p.Name, p.GetValue(purchaseContract));
                    document.Replace(p.Name, p.GetValue(purchaseContract).ToString(), false, true);
                }
            }
            catch (Exception ex)
            {
                string msg = ex.Message;
                throw;
            }
        }
        public static void AddTable(List<PurchaseContractDetaile> purchaseOrderDetaileList)
        {
            try
            {
                Table table = document.Sections[0].Tables[0] as Table;
                int rowNum = purchaseOrderDetaileList.Count;
                DataTable dataTable = new DataTable();
                int i = 1;
                foreach (var item in purchaseOrderDetaileList)
                {
                    table.AddRow(10);
                    if (i < table.Rows.Count)
                    {
                        table[i, 0].AddParagraph().AppendText(item.采購單號);
                        table[i, 1].AddParagraph().AppendText(item.品名);
                        table[i, 2].AddParagraph().AppendText(item.SKU);
                        table[i, 3].AddParagraph().AppendText(item.產品描述);
                        table[i, 4].AddParagraph().AppendText(item.單位);
                        table[i, 5].AddParagraph().AppendText(item.數量.ToString());
                        table[i, 6].AddParagraph().AppendText(item.單價.ToString());
                        table[i, 7].AddParagraph().AppendText(item.采購成本.ToString());
                        table[i, 8].AddParagraph().AppendText(item.稅金.ToString());
                        table[i, 9].AddParagraph().AppendText(item.價稅合計.ToString());
                    }
                    i++;
                }
                table.AddRow(10);
                table[i, 0].AddParagraph().AppendText("合計(大寫):" + Common.ConvertToChineseRMB(2386.20M));
                table.ApplyHorizontalMerge(i, 0, 8);
                table[i, 9].AddParagraph().AppendText("2386.20");
            }
            catch (Exception ex)
            {
                string errorMsg = ex.Message;
                throw;
            }
        }

    }

 4:模板文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM