我的客户有一个文件,他们已经使用了一段时间,将数据上传到他们的应用程序。 Oracle表中的字段是VARCHAR 50.他们使用的Excel电子表格中的字段是列宽50并标记为常规。我将其更改为文本并保存为.csv。字段中包含字母数字的所有行都可以保存,但是所有数字都会转换为科学记数法。我发现这里有一些东西将格式(数据>文本到列)从常规更改为文本。没有任何内容可以将数字转换为文本,就像此电子表格中字段中的其他值一样。我该怎么做才能确保每次都这样做?他们说这是他们第一次看到它......我对此表示怀疑。尽管如此,我仍然可以解决问题。我需要为他们提供一个解决方案,这样当他们每年发送两次这些数据上传时,它才能正常工作。任何帮助将不胜感激。感谢名单。
答案 0 :(得分:0)
Public Sub WritetxtFiles()
Const DELIMITER As String = ","
Dim myRecord As Range
Dim myField As Range
Dim nFileNum As Long
Dim sOut As String
Dim counter As Long
Dim holder As String
Dim theDate As Date
Dim formattedDate As String
Dim dailyDirectory As String
nFileNum = FreeFile
theDate = Now
formattedDate = Format(theDate, "yyyyMMdd")
dailyDirectory = "C:\TEMP\" + formattedDate
If Dir(dailyDirectory, vbDirectory) = vbNullString Then
MkDir (dailyDirectory)
Else
End If
Sheets("orig.txt").Activate ' Adjust to match your sheet name
Open dailyDirectory & "\orig.txt" For Output As #nFileNum ' Adjust to match your desired output
counter = 1
For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
If Cells(counter, 1) <> "" Then
With myRecord
For Each myField In Range("A" & counter, "F" & counter)
sOut = sOut & DELIMITER & myField.Text
Next myField
Print #nFileNum, Mid(sOut, 2)
sOut = Empty
End With
Else
End If
counter = counter + 1
Next myRecord
Close #nFileNum
end sub
这将在C:\ Temp [yyyymmdd]中创建逗号分隔文件
答案 1 :(得分:0)
嗯,这适用于一个gov的客户,他们不允许在他们的Excel文件中使用宏。我能够保存为97-2003工作簿,然后另存为.csv。如果我用记事本而不是Excel打开,.csv文件显示正确。如果我用Excel打开它,它会转换。去搞清楚。 Thanx的帮助。希望我能用它。