TeeChart Pro VCL/FMX教程(十二):图表的导出和导入
TeeChart Pro VCL/FMX是一款主流的图表制作工具。提供了数百种用于可视化的2D、3D图形样式、56种数学、统计和金融函数,以及不限数量的坐标轴和30种调色板组件。TeeChart Pro VCL/FMX教程将会以连载的形式持续为大家带来TeeChart Pro VCL/FMX的使用方法。
本篇教程为大家带来的是TeeChart Pro VCL/FMX中图表的导出和导入的这一节,概述了以各种格式导出TeeCharts并导入TeeChart自己的.tee格式图表模板。内容主要分为以下几个部分:
导出图表
可用格式
示例导出
导出图像
JPEG,GIF,PNG
导出数据
text,XML,HTML,XLS和XLSX
TeeChart的Tee模板和数据导出/导入格式
Tee files
导入
导入Tee格式文件
示例导入Tee文件
ChartWebSource和SeriesTextSource
导出图表
可用格式
可用的导出格式——可以将所有格式复制到文件或剪贴板,某些格式可能会复制到Stream。
图像格式
(BMP) CopyToClipboardBitmap
(WMF) CopyToClipboardMetafile
BMP TBMPExportFormat
JPEG SaveChartToJPEGFile
WMF TEMFExportFormat.Enhanced (false)
EMF TEMFExportFormat
GIF TGIFExportFormat
PNG TPNGExportFormat
PCX TPCXExportFormat
VML (HTML) TVMLExportFormat
PDF TPDFExportFormat
SVG TSVGExportFormat
EPS TEPSExportFormat
Flex(Flash) TFlexExportFormat
VRML 3D TVRMLExportFormat
XAML (WPF) TXAMLExportFormat
数据格式
Text TSeriesDataText
XML TSeriesDataXML
HTML TSeriesDataHTML
Excel TSeriesDataXLS
其他格式
Tee格式是一种灵活的格式,可存储图表属性信息以及(可选)图表数据。 文件很小(取决于数据),非常适合网络用于更新基于实时客户端的图表。
TEE(TeeChart)SaveChartToFile
在运行时,您可以使用以下命令显示导出对话框:
图表 TeeExport
例:
TeeExport( Self, Chart1 );
示例导出
可以导出到文件中,大部分情况,都只需要定义目标的文件名。
例:
if SaveDialog1.Execute then Chart1.SaveToBitmapFile(SaveDialog1.FileName);
导出图像
JPEG
TeeChart本身并未包含导出方法,这是为了避免非JPEG应用程序的内存使用。
例:
// You need to include the Delphi JPEG unit in the Uses section of your project // Pass the name of the Chart to this function. We've fixed the parameters here. // In the demo they are presented as options for the user. // Place a Chart (Chart1) on a Form and populate it with data. procedure TForm1.BitBtn1Click(Sender: TObject); begin With GetChartJPEG(Chart1) do try SaveToFile('c:\temp\myJPEGChart.jpg'); { <-- save the JPEG to disk } finally Free; { <-- free the temporary JPEG object } end; end; Function GetChartJPEG(AChart:TCustomChart):TJPEGImage; var tmpBitmap:TBitmap; begin result:=TJPEGImage.Create; { <-- create a TJPEGImage } tmpBitmap:=TBitmap.Create; { <-- create a temporary TBitmap } try tmpBitmap.Width :=AChart.Width; { <-- set the bitmap dimensions } tmpBitmap.Height:=AChart.Height; { draw the Chart on the temporary Bitmap... } AChart.Draw(tmpBitmap.Canvas,Rect(0,0,tmpBitmap.Width,tmpBitmap.Height)); { set the desired JPEG options... } With result do begin GrayScale :=False; ProgressiveEncoding :=True; CompressionQuality :=50; // % 0 - 100 PixelFormat :=jf24bit; // or jf8bit ProgressiveDisplay :=True; Performance :=jpBestQuality; // or jpBestSpeed Scale :=jsFullSize; // or jsHalf, jsQuarter, jsEighth Smoothing :=True; { Copy the temporary Bitmap onto the JPEG image... } Assign(tmpBitmap); end; finally tmpBitmap.Free; { <-- free the temporary Bitmap } end; end;
性能,jpegBestQuality和压缩质量百分比(高值减去压缩)的存在将使文件更大,导出花费的时间会更长,但是导出的效果会更好,可以根据自己的需求来选择。
GIF
TeeChart提供了创建GIF图表图像的方法,但您应该使用Unisys检查您的许可位置,以便使用GIF LZW编码图像。 替代RLE编码不受Unisys许可的约束。
使用TeeChart对话的示例
Uses TeeGIF, TeExport; procedure TGIFExportForm.Button1Click(Sender: TObject); begin TeeSavePanel(TGIFExportFormat,Chart1); end;
示例代码
Uses TeeGIF, GIFImage; procedure TForm1.Button1Click(Sender: TObject); var tmpGIF : TGIFImage; begin tmpGIF:=TGIFImage.Create; With tmpGIF do begin Compression:=gcLZW; DitherMode:=dmStucki; ColorReduction:=rmQuantizeWindows; Assign(Chart1.TeeCreateBitmap(Chart1.Color,Rect(0,0,Chart1.Width,Chart1.Height))); SaveToFile('c:\tempCharts\Chart1.gif'); end; end;
PNG
要使用PNG图像格式,\ Windows \ System文件夹或路径中需要有LPng.DLL。 PNG提供主要浏览器支持的压缩图像格式。
例:
Uses TeePNG, TeExport; procedure TPNGExportForm.Button1Click(Sender: TObject); begin TeeSavePanel(TPNGExportFormat,Chart1); end;
导出数据
TeeStore单元包括TSeriesData组件及其后代的定义:
Text TSeriesDataText
XML TSeriesDataXML
HTML TSeriesDataHTML
Excel TSeriesDataXLS (pre 2013 Excel xls) and TSeriesDataXLSObject (later versions of Excel for xlsx files)
可以创建上述组件并将其与图表系列相关联,从中可以将数据导出为文件, Stream或Clipboard。以下示例将图表系列中的数据导出到HTML表:
With TSeriesDataHTML.Create(Chart1,Series1) do Begin IncludeHeader:=True; SaveToFile('c:\tempdata\Series1HTMLData.txt'); end;
以上随机数据集的输出如下:
Series1 |
308 |
267 |
170 |
192 |
284 |
265 |
296 |
335 |
454 |
Excel导出代码的示例:
uses TeeExcelSource try xlsexp := TSeriesDataXLSObject.Create(Chart1); xlsexp.IncludeHeader := True; xlsexp.IncludeIndex := True; xlsexp.SaveToFile('c:\temp\myExcelFile.xlsx'); finally xlsexp.Free; end;
TeeChart的Tee模板和数据导出/导入格式
Tee files
Tee files是TeeChart自己的模板格式,用于保存图表及其数据。修改的图表属性随模板一起保存,并将在模板导入新图表时重现。
优点:
Tee文件的尺寸非常小,在大多数情况下,它提供了优于纯图形格式(Quicker)的优势。
模板的目标图表是实时的,可以进行缩放和滚动,并修改其属性。
根据您的偏好,数据可以选择包含在Tee模板中。
SaveChartToFile / SaveChartToStream的声明:
procedure SaveChartToFile(AChart: TCustomChart; Const AName: String; IncludeData: Boolean); procedure SaveChartToStream(AChart: TCustomChart; AStream: TStream; IncludeData: Boolean); {See the TeeStore unit for more information}
例:
// Add the unit teestore to the 'Uses' section of your project With SaveDialog1 do begin Filter:='Teefiles|*.tee'; if Execute then SaveChartToFile(Chart1,SaveDialog1.FileName,True); end;
导入
导入Tee格式文件
从本地文件源或http数据源导入已保存的Tee文件。
示例导入Tee文件
// Import from file procedure TForm1.Button1Click(Sender: TObject); var tmpChart : TCustomChart; begin Chart1.Free; // Assuming Chart1 is already on the Form tmpChart:=TChart.Create(Self); With OpenDialog1 do begin Filter:= 'Teefiles|*.tee'; if Execute then LoadChartfromFile(tmpChart,OpenDialog1.FileName); end; Chart1 := tmpChart as TChart; With Chart1 do begin Parent:=Self; end; end;
您还可以从URL,LoadChartFromURL导入TeeChart文件。
ChartWebSource和SeriesTextSource
可以通过LoadChartFromURL方法或ChartWebSource组件从远程Web源导入Tee文件。 可以通过TSeriesTextSource组件导入CSV数据。
TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android均已加入在线订购,现在抢购可立享特别优惠!!!
关注慧聚IT微信公众号???,了解产品的最新动态及最新资讯。