在 OpenOffice Calc 中创建图表
Posted
技术标签:
【中文标题】在 OpenOffice Calc 中创建图表【英文标题】:Create chart in OpenOffice Calc 【发布时间】:2010-10-11 08:44:01 【问题描述】:我正在尝试使用OOoTools.pas
界面创建一个OpenOffice Calc 图表。代码是这样的:
/////////////////////////////// CODE //////////////////////////////////
procedure TForm1.ProcessChart(aFilename : String);
Var
oTheFile, oAllSheets, oMySheet, oCharts,
oCellRangeAddress, oRectangle, oSize : Variant;
begin
ConnectOpenOffice;
oTheFile := OpenSheet(aFilename, True);
oAllSheets:= oTheFile.Sheets;
oMySheet:= oAllSheets.getByIndex(0); // first sheet of the spreadsheet
oCharts := oMySheet.getCharts;
oCellRangeAddress := oTheFile.Bridge_getStruct('com.sun.star.table.CellRangeAddress');
oCellRangeAddress.Sheet := 0;// '1ere feuille du graphique
oCellRangeAddress.StartColumn := 0;// 'Ligne 1
oCellRangeAddress.StartRow := 0;// 'Colonne A
oCellRangeAddress.EndColumn := 3;// 'Colonne D
oCellRangeAddress.EndRow := 29;// 'Ligne 30
oRectangle := oTheFile.Bridge_GetStruct('com.sun.star.awt.Rectangle');
oRectangle := oMySheet.Bridge_GetStruct('com.sun.star.awt.Rectangle');
oRectangle.X := 8000;
oRectangle.Y := 1000;
oRectangle.Width := 5000;
oRectangle.Height := 5000;
// Type Error Mismatch error on this call:
oCharts.addNewByName('LogData',
oRectangle,
oCellRangeAddress,
true,
true);
DisconnectOpenOffice;
End;
/////////////////////////////// END CODE //////////////////////////////////
在oCharts.addNewByName
调用中,我收到“类型不匹配”错误并且没有进一步的信息可能是什么错误。
或者我必须使用其他方法吗?
【问题讨论】:
【参考方案1】:addNewByName 的 aRanges 参数需要 com.sun.star.table.CellRangeAddress
的序列,而您提供的不是 CellRangeAddress 结构的序列,而是结构本身。
试试这个:
oCharts.addNewByName('LogData',
oRectangle,
VarArrayOf(oCellRangeAddress),
true,
true);
【讨论】:
以上是关于在 OpenOffice Calc 中创建图表的主要内容,如果未能解决你的问题,请参考以下文章
OpenOffice Calc 自动化如何更改散点图的图表标签
由 EPPlus 4.1 库以 .xlsx 格式创建的图表未在 openoffice 或 libreoffice 中显示