代码之家  ›  专栏  ›  技术社区  ›  MarkF

帮助将数字作为字符串从Delphi 2010发送到Excel 2007

  •  0
  • MarkF  · 技术社区  · 16 年前

    我正在使用后期绑定将一个数字作为字符串(Cell.Value:=“2,5”)发送到Excel2007。实际代码更像:

    var CellVal: OLEVariant;
    ...
    CellVal := FloatToStr(2.5);  // Regionally formatted.
    Cell.Value := CellVal;
    

    在我的Excel 97版本中,默认情况下,此值的格式为“常规”,并将被视为一个数字。使用Excel 2007的客户最终将单元格格式设置为“标准”,Excel似乎将其视为字符串(未正确对齐)。请注意,我使用区域设置来设置数字格式,Excel似乎也使用默认区域设置。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Ondrej Kelle    16 年前

    可能是因为你给了它一个字符串。您是否尝试过直接将浮点值传递给它?

        2
  •  3
  •   The_Fox    16 年前

    由于无法格式化注释:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      App: Variant;
      Workbook: Variant;
      Worksheet: Variant;
      DoubleValue: Double;
    begin
      App := CreateOleObject('Excel.Application');
      Workbook := App.Workbooks.Add;
      Worksheet := Workbook.ActiveSheet;
      DoubleValue := 1.2;
      Worksheet.Range['A1'].Value := DoubleValue; //DoubleValue is a double, excel recognizes a double
      Worksheet.Range['A2'].Value := '1.2'; //excel recognizes a double
      Worksheet.Range['A3'].Value := '1,2'; //excel recognizes a string
      Worksheet.Range['A4'].Value := FloatToStr(1.2); //excel recognizes a string
      App.Visible := True;
    end;
    

    请记住,我有一个逗号作为十进制分隔符。

        3
  •  0
  •   J__    16 年前

    在代码中设置单元格的格式如何?

    Worksheets("Sheet1").Range("A17").NumberFormat = "General"
    
    推荐文章