.NETDocX操作Word文件生成圖表

柱形圖,折線圖等是Word操作中常見的圖表操作。那麼這節講的就是.NET操作數據生成這些圖表

準備工作:引用Xceed.Words.NET.dll,下載鏈接:https://pan.baidu.com/s/19fPFX7iScHHMWx3mIJg5Gg 提取碼:d73t 

1、項目中新建Chart文件夾存儲本次例子的類文件和導出文件,

2、並創建ChartSample類作爲操作類,

3、ChartData類存儲生成柱狀圖的數據

ChartData源碼如下,其實數據就是List集合,實際開發中,數據就是我們從數據庫中取得的數據集

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WordOperate.Samples.Chart
{
    internal class ChartData
    {
        public string Category
        {
            get;
            set;
        }
        public double Expenses
        {
            get;
            set;
        }

        public static List<ChartData> CreateCanadaExpenses()
        {
            var canada = new List<ChartData>();
            canada.Add(new ChartData() { Category = "Food", Expenses = 100 });
            canada.Add(new ChartData() { Category = "Housing", Expenses = 120 });
            canada.Add(new ChartData() { Category = "Transportation", Expenses = 140 });
            canada.Add(new ChartData() { Category = "Health Care", Expenses = 150 });
            return canada;
        }

        public static List<ChartData> CreateUSAExpenses()
        {
            var usa = new List<ChartData>();
            usa.Add(new ChartData() { Category = "Food", Expenses = 200 });
            usa.Add(new ChartData() { Category = "Housing", Expenses = 150 });
            usa.Add(new ChartData() { Category = "Transportation", Expenses = 110 });
            usa.Add(new ChartData() { Category = "Health Care", Expenses = 100 });
            return usa;
        }

        public static List<ChartData> CreateBrazilExpenses()
        {
            var brazil = new List<ChartData>();
            brazil.Add(new ChartData() { Category = "Food", Expenses = 125 });
            brazil.Add(new ChartData() { Category = "Housing", Expenses = 80 });
            brazil.Add(new ChartData() { Category = "Transportation", Expenses = 110 });
            brazil.Add(new ChartData() { Category = "Health Care", Expenses = 60 });
            return brazil;
        }
    }
}

如果出現以下錯誤,是因爲項目中缺少windowsbase.dll,可以到網上下載一個並添加引用

這是腳本之家的下載地址:https://www.jb51.net/dll/windowsbase.dll.html

到此爲止,準備工作和數據,我們都有了。接下來就是如何把數據轉換成柱狀圖並顯示到Word文檔上。

回到ChartSample類中

1、申明一個私有的變量存放,我們需要導出Word文檔的目錄

 private const string ChartSampleOutputDirectory = @"\WordOperate\WordOperate\Samples\Chart\Output\"; 

2、創建無參構造函數,判斷輸出目錄是否存在,不存在則創建該目錄

        static ChartSample()
        {
            if (!Directory.Exists(ChartSample.ChartSampleOutputDirectory))
            {
                Directory.CreateDirectory(ChartSample.ChartSampleOutputDirectory);
            }
        }

3、新建一個BarChart方法執行具體的操作,廢話就不多說了,直接上碼,每一步註釋都有說明了。

        public static void BarChart()
        {

            // 創建一個Word文檔,名字爲:柱狀圖.doc
            using (DocX document = DocX.Create(ChartSample.ChartSampleOutputDirectory + @"柱狀圖.docx"))
            {
                // 添加標題
                document.InsertParagraph("橫向柱狀圖").FontSize(15d).SpacingAfter(50d).Alignment = Alignment.center;

                // 創建一個名字爲c的柱狀圖表
                var c = new BarChart();
                c.AddLegend(ChartLegendPosition.Left, false);
                c.BarDirection = BarDirection.Column;//指示柱狀圖是橫向的還是縱向的:Column縱向,Bar橫向
                c.BarGrouping = BarGrouping.Standard;//這個不好解釋,一個4個枚舉值,你一一試一遍就知道了
                c.GapWidth = 200;//柱狀圖表的寬度
                c.GapWidth = 200;

                // 獲取數據
                var canada = ChartData.CreateCanadaExpenses();
                var usa = ChartData.CreateUSAExpenses();
                var brazil = ChartData.CreateBrazilExpenses();

                // 創建柱形並綁定數據
                var s1 = new Series("Brazil");//創建一個名爲Brazil的柱狀圖形
                s1.Color = Color.GreenYellow;//指定柱狀圖顏色,如果不指定則會隨機分配顏色
                s1.Bind(brazil, "Category", "Expenses");//綁定數據,參數1是面已經獲取到的數據

                var s2 = new Series("USA");
                s2.Color = Color.LightBlue;
                s2.Bind(usa, "Category", "Expenses");
                c.AddSeries(s2);

                var s3 = new Series("Canada");
                s3.Color = Color.Gray;
                s3.Bind(canada, "Category", "Expenses");
                c.AddSeries(s3);
                c.AddSeries(s1);//把創建好的柱狀圖像添加到柱狀圖表中

                //爲柱狀圖表添加一個標題
                document.InsertParagraph("這就是自己代碼創建的柱狀圖").FontSize(15).SpacingAfter(10d);
                //把柱狀圖表插入到一開始就創建好的Word文檔
                document.InsertChart(c);
                //保存Word文檔
                document.Save();
                Console.WriteLine( "生成成功" );
            }
        }

到Main方法中執行以下看看效果

代碼已經執行,出目錄中也有了“柱狀圖.doc”這個文件

並且生成的柱狀圖和我們預期一致

二、折線圖

生成折線圖的操作和代碼與柱狀圖基本一致,直接上代碼

 public static void LineChart()
        {
            // 創建一個Word文檔,名字爲:折線圖.doc
            using (DocX document = DocX.Create(ChartSample.ChartSampleOutputDirectory + @"折線圖.docx"))
            {
                // 添加標題
                document.InsertParagraph("折線圖").FontSize(15d).SpacingAfter(50d).Alignment = Alignment.center;

                // 創建一個折線圖表
                var c = new LineChart();
                c.AddLegend(ChartLegendPosition.Left, false);//爲柱狀體添加圖例,第一個參數表示將圖例放在左邊

                // 獲取數據
                var canada = ChartData.CreateCanadaExpenses();
                var usa = ChartData.CreateUSAExpenses();
                var brazil = ChartData.CreateBrazilExpenses();

                // 創建折線並綁定數據
                var s1 = new Series("Brazil");//創建一條名爲“Brazil”的折線
                s1.Bind(brazil, "Category", "Expenses");//綁定數據
                c.AddSeries(s1);//將該折線添加到折線圖表c中

                var s2 = new Series("USA");
                s2.Bind(usa, "Category", "Expenses");
                c.AddSeries(s2);

                var s3 = new Series("Canada");
                s3.Bind(canada, "Category", "Expenses");
                c.AddSeries(s3);

                // 爲折線圖表添加一個標題
                document.InsertParagraph("這就是自己代碼創建的折線圖").FontSize(15).SpacingAfter(10d);
                //將折線圖表插入Word文檔中
                document.InsertChart(c);
                //保存Word文檔
                document.Save();
                Console.WriteLine("生成成功");
            }
        } 

三、餅圖

public static void PieChart()
        {
            // 創建一個Word文檔,名字爲:餅圖.doc
            using (DocX document = DocX.Create(ChartSample.ChartSampleOutputDirectory + @"餅圖.docx"))
            {
                // 添加標題
                document.InsertParagraph("Pie Chart").FontSize(15d).SpacingAfter(50d).Alignment = Alignment.center;

                // 創建一個餅圖表
                var c = new PieChart();
                c.AddLegend(ChartLegendPosition.Left, false);

                // 獲取數據
                var brazil = ChartData.CreateBrazilExpenses();

                // 創建餅圖並綁定數據
                var s1 = new Series("Canada");
                s1.Bind(brazil, "Category", "Expenses");
                c.AddSeries(s1);

                // 爲餅圖表添加一個標題
                document.InsertParagraph("這就是自己代碼創建的餅圖").FontSize(15).SpacingAfter(10d);
                //將餅圖圖表插入Word文檔中
                document.InsertChart(c);
                //保存Word文檔
                document.Save();
                Console.WriteLine("生成成功");
            }
        } 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章