logo 【TeeChart VCL/FMX】教程2019 我也要发布文档

(十五):XML导出和导入


    TeeChart Pro VCL/FMX是一款主流的图表制作工具。提供了数百种用于可视化的2D、3D图形样式、56种数学、统计和金融函数,以及不限数量的坐标轴和30种调色板组件。TeeChart Pro VCL/FMX教程将会以连载的形式持续为大家带来TeeChart Pro VCL/FMX的使用方法。 

点击下载TeeChart Pro VCL/FMX最新试用版


    本篇教程为大家带来的是TeeChart Pro VCL/FMX中XML导出和导入这一节,在TeeChart版本5及更高版本中,支持图表系列数据的XML输出;版本6及更高版本支持XML格式的数据输入。

    本教程显示了有关以XML格式导出和导入图表数据的详细说明。

导出

    使用图表导出对话框,可以在设计时或运行时轻松地将图表数据导出为XML格式:

TeeChart导出对话框,数据选项卡。

    在此对话框中,您可以选择要导出的系列(或导出所有系列),以及是否要导出点索引(0,1,2 ...等),点文本(标签)或颜色。复制按钮将会生成XML文本并将其复制到Windows或Linux剪贴板;保存按钮创建一个新的XML文件。

    例如,可以使用Internet Explorer打开XML文件。

包含单个系列的示例XML文件


    导出多个系列时,XML格式有点不同:

包含单个系列的示例XML文件


按代码导出

    TeeChart提供了一个以XML格式导出系列数据的类,该类位于TeeStore.pas单元中,其名称为TSeriesDataXML。

保存到文件的示例:

Uses TeeStore;

with TSeriesDataXML.Create(Chart1, Series1) do
try
  SaveToFile('c:\sample.xml');
finally
  Free;
end;

    如果要导出Chart1中的所有系列,需要传递nil而不是在Create构造函数的最后一个参数中传递Series1。

该类还提供了将XML输出转换为字符串的函数:

var S : String;
with TSeriesDataXML.Create(Chart1, Series1) do
try
  S:=AsString;
finally
  Free;
end;

如果是有几个属性控制要导出的数据类型,例如是否包含点颜色:

with TSeriesDataXML.Create(Chart1, Series1) do
try  IncludeColors:=True;
  SaveToFile('c:\sample.xml');
finally
  Free;
end;

    到目前为止,我们已经看到如何生成包含TeeChart系列点的XML数据。接下来就是将这个XML导入图表。

导入XML数据

    TeeChart Pro包含一个自动加载XML数据的组件,该组件位于TeeXML.pas单元,类名称为TTeeXMLSource。 Delphi工具栏中的TeeXMLSource组件

    加载XML图表所需的最小属性是Chart和FileName。Chart属性指示添加XML数据的位置(哪个Chart);FileName属性也可以是Web地址(URL);Load方法启动将XML数据加载到图表系列中。

让我们创建一个新的应用程序并删除Chart1组件和TeeXMLSource1组件。

uses Series;

procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterTeeStandardSeries; // make sure "Line" style is loaded.

  TeeXMLSource1.Chart:=Chart1;
  TeeXMLSource1.FileName:='http://www.steema.com/support/teechart/6/tutorials/xml/TeeChartSampleManySeries.xml';
  TeeXMLSource1.Load;
end;

http://www.steema.com/support/teechart/6/tutorials/xml/TeeChartSampleManySeries.xml:


    注意:在上面的示例中,可以通过添加TeeChart工具栏或将TeeGally单元添加到uses来省略对RegisterTeeStandardSeries的调用,它只是注册基本的图表样式(线条,条形图,饼图等),因此XML导入过程可以根据xml文件中的系列样式自动创建系列。

生成的图表是:

图表加载示例xml文件。

    从Web URL加载远程XML文件也很简单:

procedure TForm1.FormCreate(Sender: TObject);
begin
  TeeXMLSource1.Chart:=Chart1;
  TeeXMLSource1.FileName:='http://www.steema.com/SampleData.xml';
  TeeXMLSource1.Load;
end;

从web url加载示例xml文件的图表。

只加载一个系列

    XML源组件具有SeriesNode属性,可用于仅加载一个系列(如果XML文件包含多个系列)。

TeeXMLSource1.SeriesNode:='Series2';

加载到现有系列

    如果要将XML文件中包含的一个系列数据加载到现有系列中,请设置Series属性:

TeeXMLSource1.Series:=Series1; 
TeeXMLSource1.SeriesNode:='Series2';

上面的代码将把与Series2对应的XML数据加载到Series1中。

注意:

    如果系列类不同(例如,XML Series2是Line,而Series1是Bar),则最终输出将是Series1填充零点。

为什么?

    Series2的XML数据将点值定义为Y值,而Series1(Bar系列)则将点定义为Bar。

    这个问题有两种解决方案:

  • 设置Series1 valuesource属性以匹配XML点的名称:

Series1.YValues.ValueSource := 'Y';
  • 设置XMLSource组件的ValueSource属性以匹配Series1 valuesource的名称:

TeeXMLSource1.ValueSource := 'Y';

附加功能

    TeeXMLSource组件还包括一个XMLDocument属性,该属性将会返回对解析和加载XML数据内部对象的OleVariant引用。此属性是指实现Microsoft的IXMLDomDocument接口的后期绑定创建的实例。

    TeeChart能否使用早期绑定的实例来避免可能出现的版本不兼容的问题,具体取决于您的Windows版本,Internet Explorer版本等。

    TeeXMLSource组件的另一个有用属性是TStringList类型的XML。您可以使用此属性来设置XML数据,而不是使用FileName属性,这样,就不需要XML外部文件。


                关注慧聚IT微信公众号 ???,了解产品的最新动态及最新资讯。

dd2629f30d553d56ccaf7164fdcb784e-sz_28327.webp.jpg