问题
数据库字段类型是varchar,内容有各种情况;其中数值存储都是千分符分隔方式。
例如1000存入就是’1,000’,1000mm存入就是’1,000mm’
我使用
asheet.Cells[row, col].Value := x;
结果发现,'1,000mm’导出来的内容是正常的,但是’1,000’导出来会自动变成1000,千分符不见了。
但是客户要求导出到excel的时候,输出是原值,不要经过转换。
处理过程
问deepseek 豆包 千问 等AI,得到的答案都是用下面这种方法:
asheet.Cells[row, col].NumberFormat := '@';
asheet.Cells[row, col].Value := '1,000';
我测试过了,还会自动转换。
还有一种方法是在字符串前面加单引号’,但不是我要的效果。
最终达到效果的方法
我回想起很早以前做过的一个项目遇到过这个问题,于是从老项目代码中找到了这段代码,依然能够完美的解决了这个问题
代码如下:
asheet.Cells[row, col].NumberFormatLocal := '@ ';
asheet.Cells[row, col].Value := '1,000';
使用的是NumberFormatLocal来进行格式化,格式化内容为’@ ',注意,@后面有一个空格,不能省,否则还是达不到这个效果。

1575

被折叠的 条评论
为什么被折叠?



