我有一个Excel工作表,其中包含如下所示的数据:
| 一|B| C| D| E|
| --|--|--|--|--|
| 保罗|Json|纽约| 0 |虚假|
| 坐标X| 90 |0.08348590975457270万元人民币|||
我需要将其写入csv文件。
.SaveAs方法不适用于我,因为这会为第2行创建2个尾随逗号。
因此,我的做法是:
- 对于工作表中的每一行,我确定最后一列包含的数据;
- 然后我创建一个包含该行中所有单元格的字符串;
- 该字符串将写入文件。
代码的相关部分如下所示:
fileLine = sCat(Range(ws.Cells(rLoop, 1), ws.Cells(rLoop, maxCols + 1)), ",")
Print #fileNumber, fileLine
字符串
其中,sCat是以下函数:
Function sCat(vP As Variant, delim As String) As String
' Concatenate all cells in a range, delimited by delim.
Dim v
Dim delim2 As String
For Each v In vP
sCat = sCat & delim2 & v
delim2 = delim
Next v
End Function
型
我的输出csv文件中的数据如下所示:
x1c 0d1x的数据
因此,数字0.08348590975457270最终会变成8.348590975457270E-2。如何避免在csv文件中出现科学记数法(而不必更改工作表中单元格的格式)?
有人劝我试一试:
fileLine = sCat(Application.Trim(Range(ws.Cells(rLoop, 1), ws.Cells(rLoop, maxCols + 1))), ",")
型
但这只是部分的效果,大部分的数字都没有被转换成科学记数法,但有几个数字仍然是科学记数法,这是相当不稳定的行为。
1条答案
按热度按时间z9ju0rcb1#
添加数字检查和格式设置:
字符串
Format(v, "0.##################################")
强制使用完整的数字集。