本文介绍使用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图表实现交互能力