无法将Excel文件转换为.csv

时间:2014-08-25 18:08:18

标签: excel csv

我的客户有一个文件,他们已经使用了一段时间,将数据上传到他们的应用程序。 Oracle表中的字段是VARCHAR 50.他们使用的Excel电子表格中的字段是列宽50并标记为常规。我将其更改为文本并保存为.csv。字段中包含字母数字的所有行都可以保存,但是所有数字都会转换为科学记数法。我发现这里有一些东西将格式(数据>文本到列)从常规更改为文本。没有任何内容可以将数字转换为文本,就像此电子表格中字段中的其他值一样。我该怎么做才能确保每次都这样做?他们说这是他们第一次看到它......我对此表示怀疑。尽管如此,我仍然可以解决问题。我需要为他们提供一个解决方案,这样当他们每年发送两次这些数据上传时,它才能正常工作。任何帮助将不胜感激。感谢名单。

2 个答案:

答案 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的帮助。希望我能用它。