Страницы: 1
RSS
Импорт большого текстового файла
 
Добрый день! Хэлп!
Есть большойтекстовый файл (насколько большой не могу оценить, весит 3,6гб) нужно его загрузить в эксель.  Как заканчивается один лист, на следующий. Так как строк на одном листе не хватает.  
 
Зачем????
 
Возможно через VBA, но исключительно через File System Object(FSO) построчным чтением и записью на лист(записывать можно и блоками).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
pkatn написал: ...весит 3,6гб) нужно его загрузить в эксель
Для такой махины поищите что-то более приемлемое. Или же сразу дробите на автономные куски... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Преполагаю что возможно нужно посчитать какую-нибудь статистику по данным - так может сразу кодом быстренько и посчитать и писать на лист уже результат, а не эти миллионы строк данных, которые затем кто-то будет сутки обрабатывать формулами или вручную...
 
Нам потом во внутреннее по организации надо загрузить.
Я так надеялась, что можно загрузить мастером импорта(((
А а есть пример загрузки макросом?
 
Цитата
pkatn написал:  во внутреннее по организации
так там экселька будет вероятно под четыре с половиной гигабайт, кто её откроет... Зачем?!!!!
Может нужно разбить этот текст на отдельные небольшие xlsx например по годам или кварталам, или ещё по какому признаку (сети/торговцы/клиенты/города) - в общем основной вопрос ЗАЧЕМ.
Изменено: Hugo - 18.02.2016 11:11:50
 
Цитата
pkatn написал:
Я так надеялась, что можно загрузить мастером импорта(((
Мастер импорта не умеет разбивать на листы, если информация на один не вмещается.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
По городам надо разбить. Списка городов нет(
 
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
   2.4. Не прикладывайте файлы-примеры с персональными данными, конфиденциальной информацией, коммерческой или государственной тайной! Яндекс и Google не спят - проиндексируют ваши данные и привет - они попадут в открытый доступ. И даже удаление темы потом не поможет.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Что-то мне думается что удобнее всего будет сперва кодом разложить этот огромный текст на уйму текстов поменьше, ну а там уже если нужно то можно каждый импортировать в свой xlsx, и может даже не придётся бить по листам (это сразу можно будет определить даже по размеру файла, хотя и число строк определяется на раз).
А может и этого будет достаточно - мы ведь пока не знаем ЗАЧЕМ :)
 
pkatn, такой большой файл даже непонятно чем открывать, чтобы файл-пример создать. Я написал скрипт, который возьмет из файла первые 30 кб и запишет в новый файл. Попробуйте натравить его на большой файл, заодно и посмотрим, как FSO с большим файлом работает.
Текст скрипта
Код
Option Explicit

Const CHUNK = 30000 'длина выходного файла, не более
Dim fso, extp, arg, infile, outfile, mt, s, n

If WScript.Arguments.Count = 0 Then
  MsgBox "Этот скрипт читает строки из входного файла и записывает в выходной файл," & vbLf & _
    "пока длина выходного файла не достигнет " & CHUNK & vbLf  & vbLf & _
    "Использование:" & vbLf & _
    WScript.scriptname & " ИмяФайла" & vbLf & _
    "или выделите файл в Проводнике и перетащите на значок скрипта."
  WScript.Quit
End If
arg = WScript.Arguments(0)
Set fso = CreateObject("scripting.filesystemobject")
  Set infile = fso.opentextfile(arg)
  extp = InStrRev(arg, ".")
  if extp = 0 then extp = len(arg) + 1
  Set outfile = fso.createtextfile(Left(arg, extp - 1) & "_1" & Mid(arg, extp))
  While Not infile.atendofstream
    s = infile.readline
    n = n + len(s) + 2
    if n > CHUNK then wscript.quit
    outfile.writeline s
  Wend
 
Цитата
Казанский написал:
посмотрим, как FSO с большим файлом работает.
Алексей, нормально работает. Я уже работал с такими большими файлами. Только FSO и справляется, т.к. может грузить в память частями, а не весь файл целиком.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Доброе время суток
Цитата
The_Prist написал:
олько FSO и справляется, т.к. может грузить в память частями, а не весь файл целиком.
Дмитрий, скажите, пожалуйста, а чем стандартный Line Input # Statement хуже? Вроде тоже построчно позволяет читать из текстового файла.
 
У меня на 3Гб файле загнулся стандартный метод. Хоть вроде и читает построчно, но создается впечатление, что загружает файл в память целиком и больше 2Гб вообще отказывается считывать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Доброе время суток
Дмитрий, спасибо большое. Тоже давно использую библиотеку Microsoft Scripting Runtime для работы с файлами, но вдруг понадобится использовать стандартные методы VBA.
Страницы: 1
Читают тему
Наверх