|   |   | 
| 
 | 8.2: загрузка из файла CSV (или XLS) где более 65.000 строк | ☑ | ||
|---|---|---|---|---|
| 0
    
        Sintez123 15.07.11✎ 14:46 | 
        Всегда работала моя загрузка, как вдруг появился файл больше чем понимает ексель. Более 65536 строк. Причем такие большие файлы будут регулярно. Как загрузить такой? 1С ругается только на этот файл, остальные (меньше они) загружает без проблем.     | |||
| 1
    
        smaharbA 15.07.11✎ 14:47 | 
        цсв - пофиг сколько строк, грузи без екселя     | |||
| 2
    
        Sintez123 15.07.11✎ 14:50 | 
        а как без екселя грузить? Никогда не грузил так. Сейчас код такой:
  Файлы = НайтиФайлы(Путь, "*.csv"); Для Б = 0 по Файлы.ВГраница() Цикл Файл = Файлы[Б].Путь + Файлы[Б].Имя; Акция = Справочники.Акции.НайтиПоРеквизиту("Тикер", Лев(Файлы[Б].Имя, 5)); Попытка Ексель = Новый COMОбъект("Excel.Application"); Внешний = Ексель.WorkBooks.Open(Файл); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Сообщить(Файл); А = 2; Лист = Внешний.Sheets(1); | |||
| 3
    
        unregistered 15.07.11✎ 14:51 | 
        (0) ADODB ?     | |||
| 4
    
        Sintez123 15.07.11✎ 14:52 | 
        не пробовал не разу ADODB
  пошел гуглить, спасибо, дальше сам тогда разберусь. Просто надеялся что можно было малой кровью обойтись, а не переделывать. | |||
| 5
    
        Sintez123 15.07.11✎ 14:53 | 
        (3)
  Ексель = Новый COMОбъект("Excel.Application"); | |||
| 6
    
        smaharbA 15.07.11✎ 14:53 | 
        (4) поставь ексель 2007/2010     | |||
| 7
    
        Fram 15.07.11✎ 14:54 | 
        (0) csv это ж обычный текст с разделителями. зачем эксель?     | |||
| 8
    
        Живой Ископаемый 15.07.11✎ 14:57 | 
        2(7) а если он имеет такой вид:
  0439;"назначение; платежа; хе-хе";34.5;25.02.2011 ? | |||
| 9
    
        smaharbA 15.07.11✎ 14:59 | 
        (8) а есть разница ?     | |||
| 10
    
        NikVars 15.07.11✎ 14:59 | 
        (7) Это смотря как обрабатывать. Если обрабатывать как текст, одна потеха, если как таблица мсофиса 2003 - другая.     | |||
| 11
    
        Живой Ископаемый 15.07.11✎ 15:08 | 
        2(9) пусть  скажет, интересно     | |||
| 12
    
        NikVars 15.07.11✎ 15:11 | 
        Щас тема свернулась в тему какое может быть содержимое у csv-xls файла и какое содержимое должно быть.     | |||
| 13
    
        Fram 15.07.11✎ 15:19 | 
        (8) ну такой и что?     | |||
| 14
    
        Живой Ископаемый 15.07.11✎ 15:19 | 
        расскажи как будешь делить эту строку...     | |||
| 15
    
        milan 15.07.11✎ 15:24 | 
        (14) а как ексель не будет делить?  разделители, если они не разделители квотиться должны не?     | |||
| 16
    
        Sintez123 15.07.11✎ 15:25 | 
        О! =) там вот так 
  0439;"назначение; платежа; хе-хе";34.5;25.02.2011 если текстом открыть. Так что я теперь через чтениеТекста х буду хавать | |||
| 17
    
        Живой Ископаемый 15.07.11✎ 15:26 | 
        2(15) ексель поделит правильно, я спрашивал у человека который говорит что екселя не нужно, потому что это обычный текст с разделителями     | |||
| 18
    
        Fram 15.07.11✎ 15:26 | 
        (14) сначала обработать выражения в кавычках потом остальное.. и что?     | |||
| 19
    
        Живой Ископаемый 15.07.11✎ 15:27 | 
        2(16) как ты эту строку разделишь на 4 поля а не на 6?     | |||
| 20
    
        Sintez123 15.07.11✎ 15:28 | 
        как обычно.
  там в каждой строке всегда шесть знаков точки с запятой, т.е. всегда шесть полей. и исключений быть не может | |||
| 21
    
        milan 15.07.11✎ 15:30 | 
        (17)  если ексель правильно может поделить, то и без него можно поделить правильно, и ексель не нужен.     | |||
| 22
    
        Живой Ископаемый 15.07.11✎ 15:32 | 
        2(21) интересовали приемы практиков а не мнения теоретиков
  Книга знаний: Преобразование csv в таблицу значений | |||
| 23
    
        Serginio1 15.07.11✎ 15:34 | ||||
| 24
    
        Fram 15.07.11✎ 15:35 | 
        (19) да вроде ничего сложного, если умеешь работать с функциями для работы со строками     | |||
| 25
    
        Леха Дум 15.07.11✎ 16:11 | 
        Что то вроде такого не предлагать?
  ЧтениеТекста.Открыть(ИмяВходящегоФайла, "windows-1251"); СтрокаТекста = ЧтениеТекста.ПрочитатьСтроку(); Пока СтрокаТекста <> Неопределено Цикл Если Найти(СтрокаТекста, "12:00") Тогда СтрокаТекста = СтрЗаменить(СтрокаТекста, ",", Символы.ПС); НовСтрока = ТЗ.Добавить(); НовСтрока.Город = Выборка.Город; СтрокаДаты = СтрПолучитьСтроку(СтрокаТекста, 1); НовСтрока.Период = Дата(Сред(СтрокаДаты, 1, 4), Сред(СтрокаДаты, 6, 2), Сред(СтрокаДаты, 9, 2)); НовСтрока.Температура = Число(СтрПолучитьСтроку(СтрокаТекста, 15)); | |||
| 26
    
        Леха Дум 15.07.11✎ 16:12 | 
        +(25) только вместо СтрокаТекста = СтрЗаменить(СтрокаТекста, ",", Символы.ПС);
  нужно заменить "," на ";" СтрокаТекста = СтрЗаменить(СтрокаТекста, ";", Символы.ПС); | |||
| 27
    
        Serginio1 15.07.11✎ 16:18 | 
        (25) Разбор cvs это ДКА     | |||
| 28
    
        Леха Дум 15.07.11✎ 16:31 | 
        (27) очень хорошо, я знаю что включенная лампочка накаливания не является холодной, а по делу?     | |||
| 29
    
        Serginio1 15.07.11✎ 17:30 | 
        (28) Смотри (23)     | |||
| 30
    
        Леха Дум 15.07.11✎ 17:49 | 
        (29) Смотрел, смеялся... там местами Serg_1960 тебе тоже самое нарисовал что и я     | |||
| 31
    
        Serginio1 15.07.11✎ 17:53 | 
        Смейся смейся разбери строку своим методом простой
  435,"7689900--"",,,369" Где Delimiter="," и QuoteChar="""" | |||
| 32
    
        Reset 15.07.11✎ 17:56 | 
        Забавно наблюдать, как народ, не найдя для какого-то случая подходящей встроенной функции, впадает в немощь.     | |||
| 33
    
        Леха Дум 15.07.11✎ 18:11 | 
        (31) если в компьютер ввести авно, то на выходе получишь корень квадратный из авна или авно в квадрате - знакомо? Я тебе таких ситуаций сам могу придумать.
  1) разделитель просто выбери другой. 2) контролировать надо исходящий поток, а то так тебе и Войну и мир Толстого зальют и ты его разберешь | |||
| 34
    
        Serginio1 15.07.11✎ 18:20 | 
        (33) Это реальный мир, т.к. строки могут содержать все что угодно. И формат CVS не я придумывал и в 7.7 это вшитая функция
  (2) Это ты к чему? Икота от смеха? ДКА это и есть разбор Ну если ВОЙНа и мир не соответстуют формату вызовется исключение | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |