-1

我在 Delphi(使用 Embarcadero XE3)中做一个需要 Excel 自动化的应用程序。

我需要将我的应用程序生成的 TeeChart 插入到 XLS 文件中。我将图表导出为 BMP,如下所示:

// Globals.getEnvTempPath() returns the temp directory of the current Windows user.
bmpPath := Globals.getEnvTempPath() + 'enp.bmp';
// enpChart is my TeeChart instance.
enpChart.SaveToBitmapFile(bmpPath);

图像已正确导出。
然后我将图像插入到 Excel 中,如下所示:

//WkBook is the Workbook
sheet := WkBook.Worksheets[1];
{ params: @rutaImagen, @? @? @xPosicion @yPosicion @? @? }
sheet.shapes.addpicture(bmpPath,False, True, 145, 125, -1, -1);

插入成功,但图表网格线未与工作表网格线(垂直)对齐:

在此处输入图像描述

任何想法如何解决这个问题?

4

2 回答 2

1

首先注意,你所说的“单元格”,在 TeeChart 中实际上是左轴和下轴交叉的网格线;并且在为该轴绘制标签时绘制这些轴网格线。因此,您实际上愿意控制的是轴标签的确切位置。

这些确切位置取决于图表尺寸、要绘制的标签数量及其位置:

  • 图表维度可以在设计时直接在表单中修改整个 TChart 对象,或者您也可以ChartRect通过代码更改图表的(由轴分隔的区域)。

  • 默认情况下会自动计算在轴上绘制的标签,您也可以手动设置它们。您可以使用轴Increment和属性来调整自动计算,您可以Minimum使用轴数组并使用函数填充它。MaximumClearItemsAdd(position, text)

于 2013-08-19T09:12:24.373 回答
1

三种可能的解决方案:

  1. 在导出为位图之前确保图表的行高相同,
  2. 确保 Excel 中的行高相同,
  3. 通过修改 height 参数来拉伸图像以获得相等的行高。
于 2013-08-18T10:15:53.693 回答