2010-07-05 3 views
1

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

+0

Почему бы вам просто не написать прямо в электронную таблицу? Пространство имен Microsoft.Office.Interop.Excel. –

ответ

0

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

3

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

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

0

Нижеприведенный был первоначально написан для 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 
Смежные вопросы