在Delphi中编码,我使用Axolot组件进行Excel导出。我需要自动换行一些可能包含长字符串的单元格。但是,应用wrap属性不会导致组件调整行高。
我自己解决这个问题的努力并不令人满意。只要(合并的)目标单元格相当宽,并且所需的行数很少,那么我就得到了正确的结果。但是,如果目标细胞相对较窄,那么我的身高调整就会出错。而且很难理解的是,对于同一张纸中的两个不同的单元格宽度,使用相同的字符串,一个将比一个文本行高,而另一个将被制作得不够高,几排。
我考虑从画布中获取实际的字符串宽度,但该组件位于数据模块中,因此没有可用的画布。
我在Delphi 2007中使用XLSReadWriteII4组件。
答案 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;