gpt4 book ai didi

excel - Delphi:如何将时间字符串写入Excel单元格但保留通用数字格式

转载 作者:行者123 更新时间:2023-12-03 03:09:53 25 4
gpt4 key购买 nike

我有来自客户端的 Excel(从打印到 Excel 函数生成的),奇怪的是 Excel 在具有常规范式的单元格中包含时间字符串“06:15:00”。我应该从 Delphi 创建相同的 Excel。

五月代码是:

 FWorksheet.Cells.Item[4, 5].NumberFormat:='';
FWorksheet.Cells.Item[4, 5].NumberFormat:='06:15:00';
FWorksheet.Cells.Item[4, 5].NumberFormat:='';

但它的结果是通用格式的 0.260416666666667。我可以观察到两个奇怪的场景:

  1. 如果我将单元格格式设置为“常规”,然后写入 6:15:00,在这种情况下,格式会自动转换为“自定义”,并将格式转换为“常规”结果为 0.26041666...
  2. 如果我用鼠标单击客户端 Excel 的单元格(常规:6:15:00),则 Excel 会将单元格格式转换为“自定义”,随后转换为“常规文本”也会导致 0.26...<

所以,我应该找到如何将字符串“06:15:00”写入常规单元格并同时保留常规范式的方法。从录制的VBA宏代码生成Delphi代码是不可能的,因为我找不到编写可视化Excel命令的方法来达到这种状态。

我正在使用 OLE Excel Excel_TLB。

我在 Excel 中找到了给出所需结果的命令序列,该序列可以记录为宏:

 Range("O4").Select
Selection.NumberFormat = "@"
Range("O4").Select
ActiveCell.FormulaR1C1 = "06:15:00"
Range("O4").Select
Selection.NumberFormat = "General"
Range("O6").Select

但是我在 Delphi 代码中对这个宏的翻译:

 FWorksheet.Cells.Item[4, 5].NumberFormat:='@';
FWorksheet.Cells.Item[4, 5].FormulaR1C1:='06:15:00';
FWorksheet.Cells.Item[4, 5].NumberFormat:='';

仍然产生 0.260...

最佳答案

使用AnsiChar就是解决方案:

 FWorksheet.Cells.Item[4, 5].NumberFormat:=AnsiChar('@');
FWorksheet.Cells.Item[4, 5].FormulaR1C1:='06:15:00';
FWorksheet.Cells.Item[4, 5].NumberFormat:='';

回答https://stackoverflow.com/a/24034170/1375882指出这里使用AnsiChar @非常重要,而不是Delphi2009默认提供的UnicodeChar。

关于excel - Delphi:如何将时间字符串写入Excel单元格但保留通用数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58285073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com