1

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

我们应用程序中的某些标题太大而无法放入一列,因此它们由#13+#10 (CR+LF) 分隔,因此它们位于下一行。例如

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

但是,当将其复制到 excel 中时,我们会发生奇怪的事情。CR+LF 被解释为(你猜对了)一个换行请求。因此,我们得到了一些看起来完全错误的东西。例如

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(别问)

4

2 回答 2

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;
于 2010-02-04T12:40:28.353 回答
1

那太好了。如果我这样说

"SpikeConc #13+#10 ng/g" 

它像这样在excel中正确显示

SpikeConc
ng/g

谢谢。那让我发疯了。

于 2010-02-04T12:43:44.680 回答