C#組件系列——又一款Excel處理神器Spire.XLS,你值得擁有(一)

 

正文前端

前言:最近項目裏面有一些對Excel操做的需求,博主想都沒想,NPOI唄,簡單、開源、免費,你們都喜歡!確實,對於一些簡單的Excel導入、導出、合併單元格等,它都沒啥太大的問題,可是此次的需求有兩點是NPOI搞不定的:數據庫

  1. 導入Excel後,須要切割Excel的Sheet頁,而後每一個Sheet頁單獨生成一個PDF文件。
  2. 導出Excel的時候,項目裏面須要將一些數據表格以圖表的形式在Excel裏面展現。

找了一圈資料,對於Excel生成pdf,網上的答案千篇一概:使用COM組件的方式,經過調用服務器上面的Office組件裏面的東西去轉。這種方式須要在服務器上面安裝Office,這卻是其次,最重要的是,權限的問題很頭疼。博主已經按照這種方式實現了,調試的時候沒問題,部署到IIS上面以後又出了各類權限的問題,好不容易在一臺服務器上面部署成功了,放到另外一臺服務器上面按照一樣的方式部署,卻仍是提示「拒絕訪問」。博主也是醉了。而對於Excel生成圖表,NPOI暫時沒找到實現方式,COM組件的方式能夠,可是實現起來略顯複雜,而且這東西龐大、不太穩定,尤爲是我們大部分人我的電腦上面裝的Office都不是正版,使用起來也很蛋疼。api

基於此,通過一番努力,找到了這麼一個第三方組件Spire.XLS。這兩天體驗了一把,使用起來還比較順手,在此來簡單介紹下這個組件的使用吧。服務器

本文原創地址:http://www.cnblogs.com/landeanfen/p/5888973.htmlapp

Spire.XLS系列文章:dom

1、組件介紹

Spire.XLS是E-iceblue開發的一套基於企業級的專業Office文檔處理的組件之一,全稱Spire.Office for .NET。旗下有Spire.Doc,Spire XLS,Spire.PDF,Spire.BarCode等多款專業組件,爲各類Office文檔在程序處理上提供了很大的方便,官方爲各類功能提供了大量的在線api,簡化了使用組件的難度。組件使用時不須要本地Office組件的支持。Spire.Office是一款企業級組件,它提供了收費版本和免費版本兩種級別,通常來講,對於我的的應用,免費版本已足夠用。好比對於上文博主遇到的問題,Spire.XLS組件就提供了很好的實現機制,若是你也遇到了NPOI解決不了的問題,不妨試試這個。ide

「XLS」是Excel文件的後綴之一,顧名思義,Spire.XLS固然就是針對Excel表格處理的組件嘍,本篇,博主將結合上文遇到的問題來看看Spire.XLS組件的強大功能。post

2、組件安裝使用

對於組件的安裝,在此仍是提供兩種方式:測試

一、官方下載安裝

下載地址。官方下載的安裝包是msi結尾的,安裝時須要選擇支持的VS版本等信息,軟件的安裝就不作過多說明,有興趣的能夠下載試試。

二、Nuget安裝

你們最喜歡的應該仍是Nuget方式吧,簡單,方便,而且易於管理。博主也是不太喜歡爲了一個組件而去單獨下載一個安裝包。

Spire.XLS也提供了Nuget的方式,只須要搜索Spire,選擇免費版的組件便可:

安裝完成後自動引用了須要的dll

3、組件功能介紹

關於Excel的一些經常使用操做,好比取值、賦值、設置單元格樣式等,這裏就不作過多介紹,不管是Com組件、NPOI仍是Aspose,這些都是最基礎的功能。下面就針對上文提出的幾個問題着重說明下。

一、Excel轉PDF

(1)COM組件實現思路回顧

關於Excel轉PDF的實現,網上找到的解決方案基本同樣,大體代碼如此:

複製代碼
      /// <summary>
         /// 把Excel文件轉換成PDF格式文件  
         /// </summary>
         /// <param name="sourcePath">源文件路徑</param>
         /// <param name="targetPath">目標文件路徑</param>
         /// <returns>true=轉換成功</returns>
        public bool XLSConvertToPDF(string sourcePath, string targetPath)
        {
            Logger.Info("開始轉pdf");
            bool result = false;
            XlFixedFormatType targetType = XlFixedFormatType.xlTypePDF;
            object missing = Type.Missing;
            Microsoft.Office.Interop.Excel.Application application = null;
            Microsoft.Office.Interop.Excel.Workbook workBook = null;
            try
            {
                application = new Application();
                application.Interactive = false;
                object target = targetPath;
                object type = targetType;
                workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing);
                application.Interactive = true;
                workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
                result = true;
            }
            catch(Exception ex)
            {
                Logger.Error("excel轉pdf異常,異常信息:" + ex.Message + "。堆棧信息:" + ex.StackTrace); 
                result = false;
            }
            finally
            {
                if (workBook != null)
                {
                    workBook.Close(true, missing, missing);
                    workBook = null;
                }
                if (application != null)
                {
                    application.Quit();
                    application = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return result;
        }
複製代碼

這個方法須要依賴於本機上面的office Com組件,若是你安裝Office的時候,沒有安裝com組件相關的dll,這個方法也是用不了的,而且還有一個最大的問題就是執行 application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); 這一個方法的時候須要當前用戶有操做Excel Application這個組件的權限,尤爲是部署到IIS上面以後,須要配置一系列的權限,非常麻煩。

(2)Spire.XLS實現轉換

經過上文,咱們知道,Spire.Office提供了Spire.XLS和Spire.PDF兩個組件,那麼他們之間的轉換就簡單了。咱們仍是模擬一個文件上傳的功能。

前端有一個上傳控件:

 <input type="file" name="txt_file" id="txt_file" class="file-loading" />

後臺有一個接收上傳文件的方法以下:

複製代碼
     [HttpPost]
        public JsonResult UploadFile()
        {
            var strRes = string.Empty;
            var oFile = Request.Files["txt_file"];
            Workbook book = new Workbook();
            book.LoadFromStream(oFile.InputStream);
            var strFullName = @"D:\Data\Upload\" + "First" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
            book.SaveToPdf(strFullName);
            return Json(new object { }, JsonRequestBehavior.AllowGet);
        }
複製代碼

就這麼簡單的幾句話便可實現將上傳的Excel轉成PDF文件。根據源文件生成Workbook對象,Spire.XLS提供了多種方式,咱們最經常使用的兩種方式以下:

// 根據文件路徑生成workbook.
        public void LoadFromFile(string fileName);
// 根據文件流生成workbook.
        public void LoadFromStream(Stream stream);

2.一、最原始的轉換

原始Excel文件:

轉換成PDF以後

2.二、很差看?加一個邊框便可。

轉換以後

2.三、自定義轉換的PDF

有些狀況下,咱們Excel裏面有不少列,致使默認生成的pdf換行問題,這樣將會致使PDF的可讀性不好,這種狀況,Spire.XLS爲咱們提供了自定義轉換PDF的方式,好比能夠指定PDF的頁寬,頁高,大小等等屬性。

好比有以下Excel文檔須要轉換成PDF文件:

若是按照常規的轉換,生成的PDF的寬度不足以顯示Excel的全部列,因而轉換出來的效果這樣:

爲了解決這種問題,組件爲咱們提供了以下方法:

複製代碼
        [HttpPost]
        public JsonResult UploadFile()
        {
            var strRes = string.Empty;
            var oFile = Request.Files["txt_file"];

            Workbook book = new Workbook();
            book.LoadFromStream(oFile.InputStream);
            var strFullName = @"D:\Data\Upload\" + "First" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
            PdfDocument pdfDocument = new PdfDocument();
            pdfDocument.PageSettings.Orientation = PdfPageOrientation.Landscape;
            pdfDocument.PageSettings.Width = 1800;//指定PDF的寬度
            pdfDocument.PageSettings.Height = 1000;//指定PDF的高度

            PdfConverterSettings settings = new PdfConverterSettings();
            settings.TemplateDocument = pdfDocument;

            PdfConverter pdfConverter = new PdfConverter(book);
            pdfDocument = pdfConverter.Convert(settings);
            pdfDocument.SaveToFile(strFullName);
            return Json(new object { }, JsonRequestBehavior.AllowGet);
        }
複製代碼

這樣就能夠正常了,若是你的Excel列更多,能夠適當調整寬度和高度。獲得的結果以下

還有更多強大的功能你們有興趣能夠慢慢探索,官方文檔寫得還算詳細。

2.四、Excel轉其餘類型

除了轉爲PDF,Spire.XLS還支持轉換爲其餘類型,好比常見的xml、Image、Html等。若是你們有這方面的需求,能夠深究一下。

二、Excel生成圖表

2.一、Excel圖表生成原理分析

經過下面一張圖先來看看Excel裏面生成圖表的原理

經過這張圖咱們能夠看到,Excel生成圖表首先須要當前文檔裏面存在數據表格,而後選中相應的數據表格,最後選擇生成的圖表類型,Excel應用會自動幫你生成相應的數據圖表

2.二、Spire.XLS生成簡單圖表

知道了上面Excel生成圖表的原理,咱們再來看看Spire.XLS組件如何幫助咱們解決生成圖表的問題。關於生成圖表,Spire.XLS組件提供了不少的選擇,覆蓋了Excel裏面各類自帶的圖表類型、統計方法等。下面先來看一個簡單點的例子。

複製代碼
       [HttpPost]
        public JsonResult ExportData()
        {
            try
            {
                Workbook book = new Workbook();
                Worksheet sheet = book.Worksheets[0];
                var random = new Random();
                var iCellcount = 1;
                //1.設置表頭
                sheet.Range[1, iCellcount++].Text = "部門名稱";
                sheet.Range[1, iCellcount++].Text = "部門人數";
                var lstDeptName = new List<string>() { "市場部", "策劃部", "公關部", "行政部", "開發部" };
                var a = 0;
                //2.構造表數據
                for (var i = 2; i < 7; i++)
                {
                    iCellcount = 1;
                    sheet.Range[i, iCellcount++].Text = lstDeptName[a++];
                    sheet.Range[i, iCellcount++].NumberValue = random.Next(1, 100); ;
                }
          //3.生成圖表
                SetChart(sheet, ExcelChartType.BarClustered);var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
                book.SaveToFile(strFullName, ExcelVersion.Version2010);
            }
            catch (Exception ex)
            { }
            return Json(true, JsonRequestBehavior.AllowGet);
        }

        private void SetChart(Worksheet sheet, ExcelChartType chartFormat)
        {
            //1.設置sheet頁的名稱
            sheet.Name = "Chart data";
            sheet.GridLinesVisible = false;

            Chart chart = sheet.Charts.Add();

            //2.指定生成圖表的區域
            chart.DataRange = sheet.Range["A1:B6"];
            chart.SeriesDataFromRange = false;

            //3.指定圖表的所在位置
            chart.LeftColumn = 5;
            chart.TopRow = 2;
            chart.RightColumn = 11;
            chart.BottomRow = 29;
            chart.ChartType = chartFormat;

            //4.設置圖表的名稱以及x、y軸的名稱
            chart.ChartTitle = "部門信息";
            chart.ChartTitleArea.IsBold = true;
            chart.ChartTitleArea.Size = 12;

            chart.PrimaryCategoryAxis.Title = "部門";
            chart.PrimaryCategoryAxis.Font.IsBold = true;
            chart.PrimaryCategoryAxis.TitleArea.IsBold = true;

            chart.PrimaryValueAxis.Title = "人數";
            chart.PrimaryValueAxis.HasMajorGridLines = false;
            chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
            chart.PrimaryValueAxis.MinValue = 0;
            chart.PrimaryValueAxis.TitleArea.IsBold = true;

            //5.設置圖表的值
            Spire.Xls.Charts.ChartSerie cs = chart.Series[0];
            cs.CategoryLabels = sheet.Range["A2:A6"];
            cs.Values = sheet.Range["B2:B6"];
            cs.DataFormat.ShowActiveValue = true;
            chart.Legend.Position = LegendPositionType.Top;
        }
複製代碼

經過以上一段代碼獲得的Excel內容以下:

代碼釋疑:關於上面的代碼不難,但仍是想作些簡單的說明。

  1. 首先填充表格數據,Spire.XLS讀寫數據表格使用的是sheet.Range[i, iCellcount++].Text這種方式。值得一提的是這裏的行列索引都是從1開始的。Range除了提供行列索引的方式,還提供了Range["B1"].Text這種方式去讀取值。
  2. 經過上文Excel生成圖表原理咱們知道,出了有數據表格,還得選中生成圖表的區域,上述代碼裏面經過 chart.DataRange = sheet.Range["A1:B6"]; 這一句去指定區域,和Excel裏面的操做方式保持一致。
  3. 經過 chart.ChartType = chartFormat; 來指定須要生成的圖表類型,Spire.XLS裏面經過一個枚舉類型包含了各類圖表類型。
  4. 除了上面的這些,組件還支持指定圖表在文檔中的位置、圖表座標的最大值最小值。而且可以經過
    Spire.Xls.Charts.ChartSerie cs = chart.Series[0];
    cs.CategoryLabels = sheet.Range["A2:A6"];
    cs.Values = sheet.Range["B2:B6"];

    這種方式去指定分類和值的區域,更加符合Excel的操做習慣。固然,如無特殊,這些徹底能夠不用指定。

2.三、對兩項或者多項進行統計

上面只是一個最簡單的例子,若是要對多列進行統計呢?咱們繼續來看這個例子,咱們將代碼改爲這樣:

複製代碼
     [HttpPost]
        public JsonResult ExportData()
        {
            try
            {
                Workbook book = new Workbook();
                Worksheet sheet = book.Worksheets[0];
                var random = new Random();
                var iCellcount = 1;
                //1.設置表頭
                sheet.Range[1, iCellcount++].Text = "部門名稱";
                sheet.Range[1, iCellcount++].Text = "在職人數";
                sheet.Range[1, iCellcount++].Text = "離職人數";
                var lstDeptName = new List<string>() { "市場部", "策劃部", "公關部", "行政部", "開發部" };
                var a = 0;
                //2.構造表數據
                for (var i = 2; i < 7; i++)
                {
                    iCellcount = 1;
                    sheet.Range[i, iCellcount++].Text = lstDeptName[a++];
                    sheet.Range[i, iCellcount++].NumberValue = random.Next(1, 100);
                    sheet.Range[i, iCellcount++].NumberValue = random.Next(1, 100); ;
                }
//3.生成圖表
                SetChart(sheet, ExcelChartType.BarClustered);
                var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
                book.SaveToFile(strFullName, ExcelVersion.Version2010);
            }
            catch (Exception ex){}
            return Json(true, JsonRequestBehavior.AllowGet);
        }

        private void SetChart(Worksheet sheet, ExcelChartType chartFormat)
        {
            //1.設置sheet頁的名稱
            sheet.Name = "Chart data";
            sheet.GridLinesVisible = false;

            Chart chart = sheet.Charts.Add();

            //2.指定生成圖表的區域
            chart.DataRange = sheet.Range["A1:C6"];
            chart.SeriesDataFromRange = false;

            //3.指定圖表的所在位置
            chart.LeftColumn = 5;
            chart.TopRow = 2;
            chart.RightColumn = 11;
            chart.BottomRow = 29;
            chart.ChartType = chartFormat;

            //4.設置圖表的名稱以及x、y軸的名稱
            chart.ChartTitle = "部門信息";
            chart.ChartTitleArea.IsBold = true;
            chart.ChartTitleArea.Size = 12;

            chart.PrimaryCategoryAxis.Title = "部門";
            chart.PrimaryCategoryAxis.Font.IsBold = true;
            chart.PrimaryCategoryAxis.TitleArea.IsBold = true;

            chart.PrimaryValueAxis.Title = "人數";
            chart.PrimaryValueAxis.HasMajorGridLines = false;
            chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90;
            chart.PrimaryValueAxis.MinValue = 0;
            chart.PrimaryValueAxis.TitleArea.IsBold = true;

            //5.設置圖表的值
            Spire.Xls.Charts.ChartSerie cs = chart.Series[0];
            cs.DataFormat.ShowActiveValue = true;
            cs.DataFormat.ShowBubble = true;
            chart.Legend.Position = LegendPositionType.Top;

        }
複製代碼

獲得結果以下:

這裏惟一的變化是數據區域,只要指定咱們須要生成圖表的區域是哪部分,Excel會自動進行計算並生成圖表。

2.四、各類類型的圖表展現

上文說過, chart.ChartType = chartFormat; 這一句能夠設置圖表的類型,在Spire.XLS裏面定義了一系列的圖表類型:

amespace Spire.Xls
{
    // 摘要: 
    //     Chart types.
    public enum ExcelChartType
    {
        // 摘要: 
        //     Represents the column clustered chart type.
        ColumnClustered = 0,
        //
        // 摘要: 
        //     Represents the stacked column chart type.
        ColumnStacked = 1,
        //
        // 摘要: 
        //     Represents the 100% stacked column chart type.
        Column100PercentStacked = 2,
        //
        // 摘要: 
        //     Represents the 3D clustered column chart type.
        Column3DClustered = 3,
        //
        // 摘要: 
        //     Represents the 3D stacked column chart type.
        Column3DStacked = 4,
        //
        // 摘要: 
        //     Represents the 3D 100% stacked column chart type.
        Column3D100PercentStacked = 5,
        //
        // 摘要: 
        //     Represents the 3D column chart type.
        Column3D = 6,
        //
        // 摘要: 
        //     Represents the clustered bar chart type.
        BarClustered = 7,
        //
        // 摘要: 
        //     Represents the stacked bar chart type.
        BarStacked = 8,
        //
        // 摘要: 
        //     Represents the 100% stacked bar chart type.
        Bar100PercentStacked = 9,
        //
        // 摘要: 
        //     Represents the 3D clustered bar chart type.
        Bar3DClustered = 10,
        //
        // 摘要: 
        //     Represents the 3D stacked bar chart type.
        Bar3DStacked = 11,
        //
        // 摘要: 
        //     Represents the 100% 3D stacked bar chart type.
        Bar3D100PercentStacked = 12,
        //
        // 摘要: 
        //     Represents the Line chart type.
        Line = 13,
        //
        // 摘要: 
        //     Represents the stacked line chart type.
        LineStacked = 14,
        //
        // 摘要: 
        //     Represents the 100% stacked line chart type.
        Line100PercentStacked = 15,
        //
        // 摘要: 
        //     Represents the markers line chart type.
        LineMarkers = 16,
        //
        // 摘要: 
        //     Represents the stacked markers line chart type.
        LineMarkersStacked = 17,
        //
        // 摘要: 
        //     Represents the 100% stacked markers line chart type.
        LineMarkers100PercentStacked = 18,
        //
        // 摘要: 
        //     Represents the 3D line chart type.
        Line3D = 19,
        //
        // 摘要: 
        //     Represents the pie chart type.
        Pie = 20,
        //
        // 摘要: 
        //     Represents the 3D pie chart type.
        Pie3D = 21,
        //
        // 摘要: 
        //     Represents the pie of pie chart type.
        PieOfPie = 22,
        //
        // 摘要: 
        //     Represents the exploded pie chart type.
        PieExploded = 23,
        //
        // 摘要: 
        //     Represents the 3D exploded pie chart type.
        Pie3DExploded = 24,
        //
        // 摘要: 
        //     Represents the bar pie chart type.
        PieBar = 25,
        //
        // 摘要: 
        //     Represents the markers scatter chart type.
        ScatterMarkers = 26,
        //
        // 摘要: 
        //     Represents the ScatterSmoothedLineMarkers chart type.
        ScatterSmoothedLineMarkers = 27,
        //
        // 摘要: 
        //     Represents the ScatterSmoothedLine chart type.
        ScatterSmoothedLine = 28,
        //
        // 摘要: 
        //     Represents the ScatterLineMarkers chart type.
        ScatterLineMarkers = 29,
        //
        // 摘要: 
        //     Represents the ScatterLine chart type.
        ScatterLine = 30,
        //
        // 摘要: 
        //     Represents the Area chart type.
        Area = 31,
        //
        // 摘要: 
        //     Represents the AreaStacked chart type.
        AreaStacked = 32,
        //
        // 摘要: 
        //     Represents the Area100PercentStacked chart type.
        Area100PercentStacked = 33,
        //
        // 摘要: 
        //     Represents the Area3D chart type.
        Area3D = 34,
        //
        // 摘要: 
        //     Represents the Area3DStacked chart type.
        Area3DStacked = 35,
        //
        // 摘要: 
        //     Represents the Area3D100PercentStacked chart type.
        Area3D100PercentStacked = 36,
        //
        // 摘要: 
        //     Represents the Doughnut chart type.
        Doughnut = 37,
        //
        // 摘要: 
        //     Represents the DoughnutExploded chart type.
        DoughnutExploded = 38,
        //
        // 摘要: 
        //     Represents the Radar chart type.
        Radar = 39,
        //
        // 摘要: 
        //     Represents the RadarMarkers chart type.
        RadarMarkers = 40,
        //
        // 摘要: 
        //     Represents the RadarFilled chart type.
        RadarFilled = 41,
        //
        // 摘要: 
        //     Represents the Surface3D chart type.
        Surface3D = 42,
        //
        // 摘要: 
        //     Represents the Surface3DNoColor chart type.
        Surface3DNoColor = 43,
        //
        // 摘要: 
        //     Represents the SurfaceContour chart type.
        SurfaceContour = 44,
        //
        // 摘要: 
        //     Represents the SurfaceContourNoColor chart type.
        SurfaceContourNoColor = 45,
        //
        // 摘要: 
        //     Represents the Bubble chart type.
        Bubble = 46,
        //
        // 摘要: 
        //     Represents the Bubble3D chart type.
        Bubble3D = 47,
        //
        // 摘要: 
        //     Represents the StockHighLowClose chart type.
        StockHighLowClose = 48,
        //
        // 摘要: 
        //     Represents the StockOpenHighLowClose chart type.
        StockOpenHighLowClose = 49,
        //
        // 摘要: 
        //     Represents the StockVolumeHighLowClose chart type.
        StockVolumeHighLowClose = 50,
        //
        // 摘要: 
        //     Represents the StockVolumeOpenHighLowClose chart type.
        StockVolumeOpenHighLowClose = 51,
        //
        // 摘要: 
        //     Represents the CylinderClustered chart type.
        CylinderClustered = 52,
        //
        // 摘要: 
        //     Represents the CylinderStacked chart type.
        CylinderStacked = 53,
        //
        // 摘要: 
        //     Represents the Cylinder100PercentStacked chart type.
        Cylinder100PercentStacked = 54,
        //
        // 摘要: 
        //     Represents the CylinderBarClustered chart type.
        CylinderBarClustered = 55,
        //
        // 摘要: 
        //     Represents the CylinderBarStacked chart type.
        CylinderBarStacked = 56,
        //
        // 摘要: 
        //     Represents the CylinderBar100PercentStacked chart type.
        CylinderBar100PercentStacked = 57,
        //
        // 摘要: 
        //     Represents the Cylinder3DClustered chart type.
        Cylinder3DClustered = 58,
        //
        // 摘要: 
        //     Represents the ConeClustered chart type.
        ConeClustered = 59,
        //
        // 摘要: 
        //     Represents the ConeStacked chart type.
        ConeStacked = 60,
        //
        // 摘要: 
        //     Represents the Cone100PercentStacked chart type.
        Cone100PercentStacked = 61,
        //
        // 摘要: 
        //     Represents the ConeBarClustered chart type.
        ConeBarClustered = 62,
        //
        // 摘要: 
        //     Represents the ConeBarStacked chart type.
        ConeBarStacked = 63,
        //
        // 摘要: 
        //     Represents the ConeBar100PercentStacked chart type.
        ConeBar100PercentStacked = 64,
        //
        // 摘要: 
        //     Represents the Cone3DClustered chart type.
        Cone3DClustered = 65,
        //
        // 摘要: 
        //     Represents the PyramidClustered chart type.
        PyramidClustered = 66,
        //
        // 摘要: 
        //     Represents the PyramidStacked chart type.
        PyramidStacked = 67,
        //
        // 摘要: 
        //     Represents the Pyramid100PercentStacked chart type.
        Pyramid100PercentStacked = 68,
        //
        // 摘要: 
        //     Represents the PyramidBarClustered chart type.
        PyramidBarClustered = 69,
        //
        // 摘要: 
        //     Represents the PyramidBarStacked chart type.
        PyramidBarStacked = 70,
        //
        // 摘要: 
        //     Represents the PyramidBar100PercentStacked chart type.
        PyramidBar100PercentStacked = 71,
        //
        // 摘要: 
        //     Represents the Pyramid3DClustered chart type.
        Pyramid3DClustered = 72,
        //
        // 摘要: 
        //     Represents the CombinationChart chart types.
        CombinationChart = 73,
    }
}
ExcelChartType

咱們來看看一些比較常見的圖表

2.4.一、餅狀圖

ExcelChartType.Pie

ExcelChartType.Pie3D

2.4.二、連線圖

ExcelChartType.Line3D

ExcelChartType.LineStacked

2.4.三、區域圖

2.4.四、雷達圖

2.4.五、圓形柱狀圖

三、其餘功能介紹

關於Spire.XLS的其餘亮點功能,博主也還在研究,已經知道的一些經常使用功能好比(1)支持單元格合併、凍結、註釋;(2)數據庫方式的導入導出;(3)Sheet頁的複製、切割、顯示、隱藏等;(4)頁眉頁腳的設置;(5)數據的分組、排序;(6)像Excel插入圖片,設置圖片樣式等。這些功能有些已經實現,有些還在研究,等之後有機會再發出來供你們參考。由於篇幅問題,這篇先到這裏吧。更多功能能夠查看下篇http://www.cnblogs.com/landeanfen/p/5906077.html

4、總結

以上簡單總結了下Spire.XLS組件幾個特點功能,很好的解決了博主遇到的問題,博主以爲在必定程度上,Spire.XLS組件能擬補NPOI、COM組件的部分不足。還有不少其餘特點功能待之後整理以後連帶測試Demo一塊兒發出。若是你也遇到一些其餘組件解決不了的問題,不妨試試它,或許會帶給你驚喜。固然,若是本文可以幫到你,仍是但願園友們幫忙推薦,博主下次繼續努力!

本文原創出處:http://www.cnblogs.com/landeanfen/

歡迎各位轉載,可是未經做者本人贊成,轉載文章以後必須在文章頁面明顯位置給出做者和原文鏈接,不然保留追究法律責任的權利

 

 

出處:http://www.cnblogs.com/landeanfen/p/5888973.html

相關文章
相關標籤/搜索