本文介绍使用C1实现与微软Excel的交互。
不需要安装Microsoft Excel,可以用C1简单的命令来加载工作簿、操作工作表,然后将工作簿保存到一个Excel文件。它用过程C1XLBook对象在代码中把握Excel文件,可以将任何数据从应用中转换到Excel里。OpenXML格式使得它支持对更小的、压缩的XLSX文件进行保存。
在本文Demo中,就用C1XLBook导入Excel文件作为C1Chart的数据源。可以在运行时在左边面板选择不同的Excel文件,导入到C1XLBook中并读取其中的数据,效果如下图所示:
要实现上面的功能,就需要从Excel中读取数据,那么实现步骤如下。
首先从工具箱拖拽或用代码创建一个C1XLBook,在C1XLBook中加载或创建一个Excel工作簿。其代码如下:
C1XLBook _xlBook = new C1XLBook(); _xlBook.Load(AppDomain.CurrentDomain.BaseDirectory+ filename);
接着,在C1XLBook上加载的Excel后,就可以访问工作表的数据,这些数据是一个由行、列和单元格组成的简单的表格。本文Demo中需要的数据有四个:电导、压力、温度和Ph,操作单元格得到数据的代码如下所示:
DrillDataPoints GetChartData(C1XLBook book)
{
// Get first sheet
var sheet = book.Sheets[0];
// Get location, date, and cell count
var location = sheet[1, 1].Value as string;
var date = (DateTime)sheet[2, 1].Value;
var count = sheet.Rows.Count - 5;
label.Text = string.Format("{0}, {1} points", location, count);
// Get values into arrays for charting
var drillData = new DrillDataPoints(count);
for (int r = 0; r < count; r++)
{
drillData.Temperature[r] = (double)sheet[r + 5, 1].Value;
drillData.Pressure[r] = (double)sheet[r + 5, 2].Value;
drillData.Conductivity[r] = (double)sheet[r + 5, 3].Value;
drillData.Ph[r] = (double)sheet[r + 5, 4].Value;
drillData.Depth[r] = r;
}
drillData.ScaleValues();
// Send data to chart
return drillData;
}
还可以来导出XLS文件或 XLSX文件。如,C1Chart控件,它可以使用C1XLBook来生成报告与Excel兼容的版本。
导出的Save方法如下所示:
// fileName: Name of the file to save.
// stream: System.IO.Stream where the worksheet is saved.
// format: C1.C1Excel.C1XLBook.FileFormat value that specifies the format to save // the worksheet in.
// 概要:
// Saves the worksheet into a stream.
public void Save(Stream stream);
//
// 概要:
// Saves the worksheet to a file.
public void Save(string fileName);
//
// 概要:
// Saves the worksheet into a stream.
public void Save(Stream stream, FileFormat format);
//
// 概要:
// Saves the worksheet to a file.
public void Save(string fileName, FileFormat format);
本文Demo的源代码如下:
Chart_InteractionDemo.7z (1.90 mb)
本文的相关博文:创建C1Chart图表实现交互能力