在导出到Excel时包装文本

时间:2014-07-10 14:46:37

标签: delphi export-to-excel word-wrap

在Delphi中编码,我使用Axolot组件进行Excel导出。我需要自动换行一些可能包含长字符串的单元格。但是,应用wrap属性不会导致组件调整行高。

我自己解决这个问题的努力并不令人满意。只要(合并的)目标单元格相当宽,并且所需的行数很少,那么我就得到了正确的结果。但是,如果目标细胞相对较窄,那么我的身高调整就会出错。而且很难理解的是,对于同一张纸中的两个不同的单元格宽度,使用相同的字符串,一个将比一个文本行高,而另一个将被制作得不够高,几排。

我考虑从画布中获取实际的字符串宽度,但该组件位于数据模块中,因此没有可用的画布。

我在Delphi 2007中使用XLSReadWriteII4组件。

1 个答案:

答案 0 :(得分:1)

使用XLSReadWriteII2(因为你没有提到任何版本),我有一些适用于我的解决方案的笔记。

// Multiple lines of text in a single cell:
// XLS is an XLSReadWriteII2 component dropped on the form

XLS.Sheets[0].AsString[Col, Row] := 'This is a long text string';
with XLS.Sheets[0].Cell[Col, Row] do
  FormatOptions := FormatOptions + [foWrapText];
XLS.Sheets[0].AutoHeightRow(Row);

使用XLSReadWriteII5(试用版),以下工作正常,并适当调整列高度以容纳窄的默认宽度内的所有文本:

XLS.Sheets[0].AsString[Col, Row] := 'This is a long text string';
XLS.Sheets[0].Cell[Col, Row].WrapText := True;