程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【好文翻譯】測試必看:使用Spire.XLS來生成自動化報表!

【好文翻譯】測試必看:使用Spire.XLS來生成自動化報表!

編輯:C#入門知識

Download C# project - 7.1 KB 介紹  在我的編程博客中,我經常會比較不同算法或原理的性能特征。我常常會把性能日志(如花費時間)輸出到控制台或者文本文件,然後復制到電子表格中加以分析。但是最近,我發現一個新方法:我可以使用 Spire.XSL 類庫來生成最終的電子表格--包含所有的表格和圖表!接下來我將講講如何使用這個類來完成各種自動化任務。  案例  我們的目標是創建一個基准測試程序,用於測試三種不同的排序算法。我們為不同的算法所花費的時間計數。下面是簡單的代碼: 

abstract class PerfTestBase 
{ 
public double ElapsedTimeSec {get; protected set;} 
public string Name {get; protected set;} 
public abstract void run(int n); 
} 
class BubbleSortPerfTest : PerfTestBase 
{ 
public BubbleSortPerfTest() 
{ 
Name = "Bubble Sort"; 
} 
public override void run(int n) 
{ 
// 實現部分
ElapsedTimeSec = X; 
} 
} 
class MergeSortPerfTest : PerfTestBase 
{ 
public MergeSortPerfTest() 
{ 
Name = "Merge Sort"; 
} 
public override void run(int n) 
{ 
// 實現部分 ElapsedTimeSec = X; 
} 
} 
class QuickSortPerfTest : PerfTestBase 
{ 
public QuickSortPerfTest() 
{ 
Name = "Quick Sort"; 
} 
public override void run(int n) 
{ 
// 實現部分
ElapsedTimeSec = X; 
} 
} 

算法已經准備好了,現在我們需要運行它們並加入不同的啟動參數。 

List<PerfTestBase> perfTests = new List<PerfTestBase> 
{ 
new BubbleSortPerfTest(), 
new MergeSortPerfTest(), 
new QuickSortPerfTest() 
}; 
// N 從 10 加到 200, 每次增長 10 
var res = runAllTests(perfTests, 10, 200, 10); 
printResults(res); 

runAllTests這個功能只需通過設置N的值就能容易的進行循環迭代,調用 .run(N)方法。最有意思的部分,是printResults 方法部分。哪些代碼可以自動生成報表和有價值的結果呢?

最簡單解決方案

最開始時,當然我們可以將它打印到控制台。我們甚至可以使用CSV格式,然後輕松地把結果復制到電子表格裡。

N;Bubble Sort;Merge Sort;Quick Sort;

10;20,00;140,46;96,71;

20;80,00;365,48;251,64;

過一段時間,當你不斷地修改你的算法代碼,復制結果的工作就顯得乏味無比。當然,必須要有一個更快,更好的方法。如果我們不生成CSV文件,而是直接生成excel文件呢?現在應該介紹一下 Spire.XLS 類庫了。

Spire.XLS 類庫介紹 

E-IceBlue 的Spire.XSL  是一個功能強大,易於使用的類庫,它另office的自動化操作變得非常容易。很多世界500強的企業都在使用它,這個品牌是受人尊敬和眾所周知的。 

簡要概述:首先在你的項目中添加對Spire.XLS的引用。接下來你就可以創建、打開、修改、運行所有計算,而不需要安裝excel或者office。

這一類庫與 Excel 97/2003, 2007 and 2010完全兼容。

另外,Spire.XLS還可以保護、加密文件,更厲害的,它還能轉換格式。例如,你可以把你的文件轉換成PDF、圖像或者HTML文件。

這一解決方案使我們創建有價值的自動化程序變得非常簡單。

在代碼中使用Spire.XSL  

在我們的例子中,我們只使用了這個強大類庫功能中的1%。即使這樣,它已經可以節省大量的生成報表的時間了。

 基本使用

添加引用: 

using Spire.Xls; 

using Spire.Xls.Charts; 

 四行代碼創建'Hello World' 工作簿: 

Workbook wb = new Workbook(); 
Worksheet sheet = wb.Worksheets[0]; 
sheet.Range["A1"].Text = "Hello,World!"; 
wb.SaveToFile("Sample.xls", 
ExcelVersion.Version2007); 

 上述代碼可以讓我們了解怎樣使用這一類庫。基本上你可以很容易地操作工作簿、工作表和單元格。

改進的解決方案 

讓我們回到開頭描述的問題。我們的新解決方案將保留輸出到控制台部分,但是我們直接將結果保存成excel文件。除此之外,我們還可以創建圖表。這種方式將節省很多時間--不需要一遍遍地復制和生成圖表。。。下面是保存數據相關的代碼片段: 

Worksheet sheet = workbook.Worksheets[0]; 
sheet.Name = "Perf Test"; 
sheet.Range["A1"].Text = "Elapsed Time for sorting..."; 
sheet.Range["A1"].Style.Font.IsBold = true; 
// 列標題: 
sheet.Range["C3"].Text = "N"; 
sheet.Range["C3"].Style.Font.IsBold = true; 
sheet.Range["C3"].Style.HorizontalAlignment = HorizontalAlignType.Center; 
char col = 'D'; 
foreach (var n in res.Map.Keys) 
{ 
sheet.Range[col+"3"].Text = n; 
sheet.Range[col+"3"].Style.Font.IsBold = true; 
sheet.Range[col+"3"].Style.HorizontalAlignment = HorizontalAlignType.Center; 
col++; 
} 
// 將數據插入行...

接下來是生成圖表部分代碼: 

Chart chart = sheet.Charts.Add(); 
//設置圖表數據區域
chart.DataRange = workbook.Worksheets[0].Range[range]; 
chart.SeriesDataFromRange = false; 
//設置圖表位置chart.LeftColumn = 2; 
chart.TopRow = 2; 
chart.RightColumn = 12; 
chart.BottomRow = 30; 
//圖表標題chart.ChartTitle = "Sorting Time..."; 
chart.ChartTitleArea.IsBold = true; 
chart.ChartTitleArea.Size = 12; 
// ... 
chart.Legend.Position = LegendPositionType.Bottom; 
chart.ChartType = ExcelChartType.ScatterSmoothedLineMarkers; 

看,就這麼簡單!我特別喜歡的一點,就是我們可以得到一個單元格,或者整個區域。看看要改變一個單元格的樣式有多麼簡單。下圖是最終的excel文件,當然是自動生成的:

還有圖表:

 

使用Spire.XLS的好處

  • 很多種方式來自動完成你的任務 - 無需安裝office
  • 良好完整的文檔
  • 易於使用:只需要下載,然後修改你的代碼,在安裝和編譯中毫無問題。
  • 免費版也足夠使用
  • 多家500強企業使用

總結

    在本文中,我展示了我們可以通過程序自動化地生成性能報表。通過使用Spire.XLS,碼農們可以在不要求安裝office的情況下創建和操作Excel文件。這是一個非常強大的類庫,而且非常非常容易使用。我們創建報表的工作可以通過短短幾行代碼自動化地實現。另外,Spire.DOC 或者 Spire.PDF也是非常好的類庫。 

附注和鏈接 

  • 性能:在這裡看他們的與OLE性能比較測試, 看起來Spire.XLS要比OLE方式強很多.
  • 這裡是他們的快速上手手冊
  • 這一類庫是為.net設計的,但是在本機代碼中也可以使用同樣的解決方案。我需要測試時,我們可以創建一個"橋",然後從C++程序中調用.net類庫。C++程序可以完美運行,但是所有的報表是通過.net模塊調用Spire.XLS來生成的。

原文:http://www.codeproject.com/Articles/783414/Automated-Reports-with-Spire-XLS

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved