问题复制+粘贴CR + LF到excel电子表格需要软段(Alt + Enter)

时间:2010-02-04 12:25:21

标签: delphi excel export-to-excel carriage-return linefeed

我正在尝试将在我们的软件中创建的表格复制到Excel电子表格中。

我们的应用程序中的一些标题标题太大而不适合列,因此它们被#13 +#10(CR + LF)分隔,因此它们位于下一行。 e.g。

Strain  SpikeConc  Spike
        ng/g       dpm/g
-------------------------
Blah    20.0       50.1
Blah2   22.1       60.2

然而,当这被复制到excel时,我们发生了一件奇怪的事情。 CR + LF被解释为(您猜对了)一个新的行请求。因此,我们得到的东西看起来完全错误。 e.g。

Strain  SpikeConc
ng/g    Spike
dmp/g
-------------------------
Blah    20.0       50.1
Blah    22.1       60.2

在SpikeConc错误地解释CR + LF并在新单元格中创建一个新行,而不是创建一个软段落,就像你按下Alt + Enter并在同一单元格中给你一个新行一样。

任何人都有任何想法如何编码软段而不是新行?

我尝试使用CR(#13)就可以自己使用它只是LF(#10),但它们都有相同的行为。

我相信有一些unicode字符

LS:行分隔符,U + 2028

PS:段落分隔符,U + 2029

但我似乎无法找到如何将它们编码到我的应用程序表中。

PS我们正在使用Delphi6(不要问)

2 个答案:

答案 0 :(得分:1)

正如评论中所提到的,这是我们用来去除CR的功能。这个或用双引号括起字符串就足以在excel中有一个软返回。

function RemoveCr(const Value: string): string;
  var
    I, J: Integer;
  begin
    J := 0;
    SetLength(Result, Length(Value));
    for I := 1 to Length(Value) do
      if Value[I] <> #13 then
      begin
        Inc(J);
        Result[J] := Value[I];
      end;
    SetLength(Result, J);
  end;

答案 1 :(得分:1)

那太棒了。如果我这样说的话

"SpikeConc #13+#10 ng/g" 

它在excel中正确显示它

SpikeConc
ng/g

感谢。这让我发疯了。