Экспорт данных в файл CSV - PullRequest
1 голос
/ 05 июля 2010

У нас есть более 65 536 строк данных для экспорта (записи) в файл .csv. Но Excel (CSV) поддерживает только 65 536. Excel поддерживает несколько рабочих книг, поэтому мы можем записывать данные в несколько рабочих книг. Но CSV тоже не поддерживает эту функцию. Есть ли другой способ сделать это. Может ли кто-нибудь помочь в этом?

Ответы [ 3 ]

3 голосов
/ 05 июля 2010

Вы можете записать данные в несколько CSV-файлов, если это возможно.CSV - это просто текстовый файл, поэтому нет таких вещей, как несколько листов и т. Д.

Возможно, вы могли бы использовать файлы Excel (xls) и несколько листов.Существуют библиотеки для записи файлов Excel в зависимости от используемого вами языка (например, Apache POI для Java).

0 голосов
/ 05 июля 2010

Нижеследующее изначально было написано для Excel2003, но когда я перешел на 2007, COMDLG32 не поддерживался, поэтому досадно, что вы просто получаете InputBox. Я не использовал его в течение некоторого времени, поэтому, возможно, потребуется немного переделать, но, надеюсь, следует указать вам правильное направление.

Sub OpenCSV_bysheet()

'No COMDLG32.OCX

    Dim fileNo As Integer
    Dim tempRow, fileNm As String
    Dim tempRowNo, x, y As Long
    Dim CommaOnOff As Boolean

    fileNm = InputBox("Please input Drive:\Path\Filename.csv", , CurDir & "\*.csv")
    If fileNm = "" Then Exit Sub
    For x = 1 To Len(fileNm)
        If Mid(fileNm, x, 1) = "*" Or Mid(fileNm, x, 1) = "?" Then Exit Sub
    Next x

'    UserForm1.CommonDialog1.CancelError = True
'    UserForm1.CommonDialog1.Flags = cdlOFNHideReadOnly
'    UserForm1.CommonDialog1.Filter = "Comma Separated Value files (*.csv)|*.csv|All Files (*.*)|*.*"

    On Error GoTo errorTrap
'    UserForm1.CommonDialog1.ShowOpen

'    fileNm = UserForm1.CommonDialog1.Filename

    fileNo = FreeFile
    tempRowNo = 0
    x = 0
    y = 0

    On Error Resume Next
    Workbooks.Add (xlWBATWorksheet)
    Application.ScreenUpdating = False

    Open fileNm For Input As fileNo
        Do While Not EOF(fileNo)
            Line Input #fileNo, tempRow

            If x Mod 65536 = 0 And x > 0 Then
                Sheets.Add
                x = 0
            End If
            x = x + 1
            y = y + 1

            ActiveCell.Cells(x, 1).Value = tempRow

            ActiveCell.Cells(x, 1).TextToColumns Destination:=ActiveCell.Cells(x, 1), _
                DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
                Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False

            Application.StatusBar = y

        Loop
    Close fileNo

errorTrap:
    Application.ScreenUpdating = False
    Application.StatusBar = False
End Sub
0 голосов
/ 05 июля 2010

Если вы ориентируетесь на Excel, есть много библиотек, которые помогут сгенерировать файл xls, вставленный из CSV. Один из них - CarlosAg.ExcelXmlWriter.dll , который прост в использовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...