生成自动化数据表

简介:                                                            生成自动化数据表   在我的编程博客中,我经常会对比不同算法和概念的结果特征。
                                                           生成自动化数据表

 

 

在我的编程博客中,我经常会对比不同算法和概念的结果特征。通常我会把执行结果(像运行时间)载入到控制台或一个文本文档然后再将他们复制到数据表格中分析。最近呢,我发现了实现这一系列操作的另外一种方法:我用了下Spire.XSL 库来生成最后的电子表格 – 处理所有的表格和图表哦!阅读下面的内容你将会学到如何利用这个函数库来完成各种不同的自动化任务。

  

Download C# project - 7.1 KB, zip

示例

我们的目标是创建一个标准检查应用程序,我们要在这上面测试三种不同的算法。我们想根据元素数量得到运行时间。以下是要用到的一段简单代码:

abstract  class PerfTestBase
{
     public  double ElapsedTimeSec { getprotected  set;}
     public  string Name { getprotected  set;}

     public  abstract  void run( int n);
}
class BubbleSortPerfTest : PerfTestBase
{
     public BubbleSortPerfTest()
    {
        Name =  " Bubble Sort ";
    }

     public  override  void run( int n)
    {
         //  real implementation here
        ElapsedTimeSec = X;
    }
}

class MergeSortPerfTest : PerfTestBase
{
     public MergeSortPerfTest()
    {
        Name =  " Merge Sort ";
    }

     public  override  void run( int n)
    {
         //  real implementation here
        ElapsedTimeSec = X;
    }
}

class QuickSortPerfTest : PerfTestBase
{
     public QuickSortPerfTest()
    {
        Name =  " Quick Sort ";
    }

     public  override  void run( int n)
    {
         //  real implementation here
        ElapsedTimeSec = X;
    }
}

 

 

算法有了,现在我们需要用不同的起始参数来运行他们。

List<PerfTestBase> perfTests =  new List<PerfTestBase> 

     new BubbleSortPerfTest(), 
     new MergeSortPerfTest(), 
     new QuickSortPerfTest() 
};
 
//  N from 10 up to 200, step is 10
var res = runAllTests(perfTests,  1020010);
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

Spire.XLS 是一个使Office办公自动化操作更简便的函数库

简单地说:添加Spire.XLS的引用到你的程序中你就可以实现创建,打开,升级,输出计算结果,而这些操作并不需要你的操作系统中安装微软的ExcelOffice

这个函数库完全兼容Excel 97/2003, 2007 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;
 
//  columns title:
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++;
}
 
//  insert values into rows...

 

再下面是一些图表生成的代码:

Chart chart = sheet.Charts.Add();
 
// Set region of chart data
chart.DataRange = workbook.Worksheets[ 0].Range[range];
chart.SeriesDataFromRange =  false;
 
// Set position of chart
chart.LeftColumn =  2;
chart.TopRow =  2;
chart.RightColumn =  12;
chart.BottomRow =  30;
 
// Chart title
chart.ChartTitle =  " Sorting Time... ";
chart.ChartTitleArea.IsBold =  true;
chart.ChartTitleArea.Size =  12;
 
//  ...
 
chart.Legend.Position = LegendPositionType.Bottom;
chart.ChartType = ExcelChartType.ScatterSmoothedLineMarkers;


就这么简单!!

我特别欣赏这样可以单个地选中单元格或者选中整行。注意改变单元格的样式是多么简单。

最终的Excel文件当然是自动生成的:

 

还有图表

类似函数库

如果你想使用开源代码,

ClosedXML – 使用ClosedXML可以创建Excel 2007/2010 文件而不用安装Excel程序。

EPPlus - 使用这个库可以读取和编辑Excel 2007/2010文件,但仅支持Open Office Xml格式 (xlsx)

NPOI - 一个开源工程,可以帮助你读取/编辑xls, doc, ppt文件。

总结

在本篇文章中,我向大家展示了如何简单地把程序中的结果自动生成为数据表展示。通过使用Spire.XLS,编程者们可以在系统无安装Office的情况下创建并处理Excel文件。这个函数库十分强大但是使用却很简便。我们的任务 – 创建运行结果表 – 就可以利用几行代码自动生成了。


 

目录
相关文章
|
数据挖掘 项目管理 数据库
用语雀数据表做项目管理
项目管理是技术同学经常会面临的课题,有没有什么轻量级的工具可以便捷使用呢? 且看看科技公司项目经理的实践案例吧~
|
4月前
|
SQL 存储 数据处理
"SQL触发器实战大揭秘:一键解锁数据自动化校验与更新魔法,让数据库管理从此告别繁琐,精准高效不再是梦!"
【8月更文挑战第31天】在数据库管理中,确保数据准确性和一致性至关重要。SQL触发器能自动执行数据校验与更新,显著提升工作效率。本文通过一个员工信息表的例子,详细介绍了如何利用触发器自动设定和校验薪资,确保其符合业务规则。提供的示例代码展示了在插入新记录时如何自动检查并调整薪资,以满足最低标准。这不仅减轻了数据库管理员的负担,还提高了数据处理的准确性和效率。触发器虽强大,但也需谨慎使用,以避免复杂性和性能问题。
61 1
|
4月前
|
存储 运维 NoSQL
分布式表的写入流程
分布式表的写入流程
|
7月前
|
DataWorks 定位技术 数据库
DataWorks数据地图中没手工同步就可以查到修改后的表名,但是业务流程中【表结构】还是没有变化?
DataWorks数据地图中没手工同步就可以查到修改后的表名,但是业务流程中【表结构】还是没有变化?
65 1
|
SQL 数据库
数据表管理总结
数据表管理总结
|
关系型数据库 MySQL 数据库
|
移动开发 前端开发 数据可视化
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(1)
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
262 0
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(1)
|
移动开发 JSON 前端开发
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(2)
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
644 0
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(2)
|
数据库
8_数据表的操作(重点)
8_数据表的操作(重点)
98 0
|
SQL 数据库
SQL 基础(三)数据表的创建与管理实战演练
SQL 基础(三)数据表的创建与管理实战演练
200 0
SQL 基础(三)数据表的创建与管理实战演练