Импорт файлов типов XLS, DBF, и TXT в табличное поле (Простой читальщик xls файлов)

0. 1768 11.01.08 14:52 Сейчас в теме
Отчёт предназначен для чтения файлов *.xls, *.dbf и *тхт с разделителями в табличное поле данного отчёта для последующей обработки.


Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vasilykushnir 11.01.08 14:52 Сейчас в теме
C почином, Санек. Поддержим коллегу!
2. Abadonna 3891 11.01.08 16:01 Сейчас в теме
Кушнир-то фиг проверил, нет у него восьмерки, а я проверил ;)
Рабочая, как новичку- плюс
12. PeRom 51 25.09.08 11:00 Сейчас в теме
>открытие и чтение файла с количеством 5…10 000 строк происходит за 1…5 секунд
Как этого добился? Что используешь?
Последнюю обработку скачать не могу, а в текстовых тот-же принцип, что и у меня:
Код
Файл = Новый COMОбъект("Excel.Application");
Файл.DisplayAlerts = 0;                   //не задавать вопросы
Файл.Application.AutomationSecurity = 3;  //уровень безопасности
Книга = Файл.Workbooks.Open(ФайлХЛ);//строка выполняется 5-6 минут, какая альтернатива?
Лист = Книга.Worksheets(2);
Пока (НЕ ПустаяСтрока(Строка(Лист.Cells(строкаXL,1).Value))) или
   (НЕ ПустаяСтрока(Строка(Лист.Cells(строкаXL,2).Value))) Цикл
   строкаXL = строкаXL+1;
КонецЦикла;                                       
COMSafeArrayМассив = Лист.range(Лист.Cells(1,1),Лист.Cells(строкаXL,249)).Value;
Книга.Close();
Показать полностью

открываю файл с несколькими листами, макросами и паролем. Как ещё можно считать из него инфу и желательно без ВК?
3. vasilykushnir 11.01.08 17:13 Сейчас в теме
А на каком фигу я ее проверю? Просто коллега по цеху смотрю пырвую обработку выложил - решил поддержать доброе начинание, дабы не заклевали новичка.
4. imsoftware 173 12.01.08 18:38 Сейчас в теме
5. Abadonna 3891 12.01.08 21:00 Сейчас в теме
Предусмотри и еще один режим на тот случай, если первая строчка ёкселя содержит заголовки колонок, в это случае создавать колонки не Колонка1...КолонкаX, например, Наименование-Количество-Цена. Будет юзабельнее
6. Шёпот теней 1768 14.01.08 08:00 Сейчас в теме
(5) Спасибо, Abadonna!

У меня так и работает. Да! Если это ещё кому то нужно, обязательно вставлю... Просто хотелось максимальной простоты, понятности и универсальности... Особенно для новичков... Когда месяц назад стал изучать 8-ку был в ужасе... теперь ничего...

Спасибо, ещё раз... Удачи!
7. Шёпот теней 1768 14.01.08 09:18 Сейчас в теме
(5) По совету "Abadonna" дополнил отчёт перенаименованием колонок табличного поля по выбранной строке или по выбранной ячейки см. файл и описание к файлу "ЧтениеЭкселя_01"

Спасибо всем кто выразил своё мнение в комментариях и/или скачиваниях данного отчёта.

Всем удачи и успехов!
8. serg1c 23 14.01.08 11:59 Сейчас в теме
Ну вообще-то обработкой текстовый файл можно назвать только с натяжкой!
А файлы .efd вообще как обработка не котируются.
Я не понял. Или убрали с сайта .ert или так и было?
9. serg1c 23 14.01.08 12:18 Сейчас в теме
Я видать не понял.
Это для 8-ки что-ли?
10. Шёпот теней 1768 14.01.08 18:04 Сейчас в теме
Спасибо магнтогорцам за советы и общение...

Всем удачи!
11. Abadonna 3891 14.01.08 18:10 Сейчас в теме
(8,9) А фигли понимать?
Вверху четко написано, хоть и мелкими буквами: "Внешняя компонента для 1С: Предприятие 8.0"
Правда она не внешняя, но для 8.0 - точно ;)
13. Dirk Diggler 08.01.10 04:15 Сейчас в теме
Отличная обработка. Пару идей выскажу. Лично мне не хватает:

  • возможности редактировать содержимое таблицы
  • загрузки нескольких листов по выбору
  • Удаления столбцов и строк
  • переноса в выбранную табличную часть
15. Шёпот теней 1768 18.01.10 15:05 Сейчас в теме
(13) загрузка из листов реализовано здесь: http://infostart.ru/public/22279/ ... думаю что реализовать загрузку из нескольких листов в одну ТЗ труда не составит ...
14. uri1978 130 18.01.10 12:58 Сейчас в теме
Спасибо. Буду использовать как пример для написания своей обработки.
То что нужно!
;)
16. Шёпот теней 1768 18.01.10 15:13 Сейчас в теме
(14) ... и вам спасибо ...

по поводу любой работы с XLS все ноги растут так или иначе от господина Душелова ... и эта разработка была написана на основе чтения его обработок ... и пользуясь случаем хочется выразить ему багодарность ...

быстрота чтения из Ексель достигается чтением листа не по ячейкам, хотя и это иногда нужно, а сразу весь лист оператором UsedRange.Value ... а при записи использовать в ексель файл использовать запись всей ТЗ используя МассивКОМ = Новый COMSafeArray("VT_VARIANT", ВсегоКолонок, ВсегоСтрок);
...

всё это есть в обработке: http://infostart.ru/public/22279/ ...

... вот ...
17. Шёпот теней 1768 19.01.10 08:09 Сейчас в теме
для uri1978 ... и кому интересно ... есть интересный сайт http://www.citforum.ru/programming/windows/ ... тут можно найти некоторые ответы ...

на вопрос:как при использовании UsedRange.Value избежать автоматического перевода текста "0100100" в число (100100) прямого ответа у меня нет ...

КТО знает подскажите ... ?

я делаю так ... в ексель при помощи функции "СЦЕПИТЬ" добавляю к явному текстовому полю знак апострофа ... а потом его удаляю ...

п.с. видимо надо копировать надо не UsedRange.Value а другим оператором копирования колонок с заданным форматом ...

дополнительные операторы можно посмотреть тут : http://msdn.microsoft.com/en-us/library/aa215923(office.11).aspx

... вот ...
18. gaglo 19.01.10 10:57 Сейчас в теме
(17) Заинтересовался... ибо вопрос сформулирован несколько расплывчато. Что есть "явное текстовое поле"? Ячейкам в Экселе задан формат "текстовый"? Последующее упоминание апострофов наводит на мысль, что формат всё-таки "общий", и тогда поле "явно текстовое" только для человеков.
По результатам моих экспериментов для чтения через Value выводы таковы:
- если ячейке Экселя явно задан формат "текстовый", то в 1С попадает значение как строка;
- если задан формат "числовой", то в 1С попадет число;
- если формат ячеек (по умолчанию) "общий", то по дороге неизбежно происходит то самое автоматическое преобразование: значения становятся числами, если только их возможно полностью преобразовать в число, иначе становятся строками (.10 будет числом, .10.24 - станет строкой);
- формат ячеек Экселя должен быть установлен до ввода значений в них!! иначе придется "обновить" значения в ячейках с измененным форматом, хотя бы банальным F2-Enter, чем я иногда и занимаюсь (с помощью кнопки и макроса).
Насчет другого оператора копирования колонок сильно сомневаюсь; можно попробовать забирать UsedRange.Text, тогда все ячейки превратятся в строки; поможет ли это в деле последующего разбора? Пока непонятно...
PS Тут же и попробовал - UsedRange.Text как массив не берется (не то что Value), а по одной ячейке неинтересно ;-[
Шёпот теней; +1 Ответить
19. Шёпот теней 1768 19.01.10 12:58 Сейчас в теме
(18) ... нууу... просто СПАСИБО ... и не ПРОСТО то же... ВОТ ...

хм... проблема в том, что если в Екселе стоит формат.общий и там стоит "001" то если колонку с данной ячейкой сделат формат.текстовое то ексель делает "001" как (1) ... приходится копировать колонку и вставлять её как текст что не всегда получится ... ))) ... поэтому делаю как в (17) ...

полностью согласен поячеечное чтение не "фонтан"...
мне больше нравится сохранять данные из 1С в 1С через mxl или ЗначениеВФайл/ЗначениеИзФайла ...

... вот ...
33. gaglo 20.01.10 13:06 Сейчас в теме
(19) Мы вдвоем взаимно согласны друг с другом!
Но теперь мне непонятно: как можно сделать в Экселе формат общий и значение 001? Руками не получается, даже если я набираю клавишами 001; стоит нажать Enter, и в ячейке остается и значение 1, и видимое представление "1", но без всяких нулей. Речь идет, что ли, о табличке -продукте быстрой выгрузки из 1С?
34. Шёпот теней 1768 20.01.10 14:22 Сейчас в теме
(33) ... правила - ОБЩИЕ ... применение - "ЧАСТНОЕ" ...

форматОбщий не даст сделать "001" ... либо текствоый либо какой-нибудь придумать форматСпециальный ...

... наверное ...

если сохранять методами 1С "вывести" и "сохранить копию" там то же будет куча вопросов ... т.к. формат подберЁтся весьма странный ... вОООбщем теория всегда Общая а практика всегда - Частная ...

... ВОТ ...
23. Шёпот теней 1768 19.01.10 14:11 Сейчас в теме
(22) ... всё стало понятно ... оказывается то была реклама...)))

сначало чем не устраивает поячеечное чтение обработки с диска ИТС ... а потом купите у меня ... моя лучше... ))))

... вотоднаковот ...


п.с. Eugeneer - не перебАрщивай с манией ...
32. larisab 159 20.01.10 08:44 Сейчас в теме
(24) И это при том что сабж 2008 года :o
27. Шёпот теней 1768 19.01.10 15:09 Сейчас в теме
(26) ... вместо цыц ... взял бы и научил бы нас как в 1С ... "в 1с ...вся экселевская таблица.....полностью загружается в таблицу значений 1С......ОДНИМ методом..... " ...

все бы тебе были благодарны ... а то, что ты умный мы и так знаем ...

... вОт ...

п.с. по поводу 2010 года... это была моя самая первая обработка написаннная в 2007 году на 1С 8.0 ... и прекрасно помню как с БОЛЬШИМ интересом читал подобные обработки ...
28. Шёпот теней 1768 19.01.10 16:59 Сейчас в теме
жаль... жаль... что Eugeneer так и не научил нас : ... "в 1с ...вся экселевская таблица.....полностью загружается в таблицу значений 1С......ОДНИМ методом..... " ...

видимо умность и жадность рядом ходят .... хм... или на одной шеи сидят ...

... ВОТведьВОТ ...
31. Шёпот теней 1768 20.01.10 08:39 Сейчас в теме
(30) ... Eugeneer ! ... у вас ко мне мания ...

... данная обработка и txt - загружает, и dbf - грузит (хотя и dbf лучше открывать как xls - меньше проблем с кодовыми страницами) ...

... воообщем НЕпонятно чтоТО или чтоТО не о ТОМ ...

... вотВобщемТАКвот ...
35. Ish_2 1062 24.01.10 11:36 Сейчас в теме
Шепот , ты не поверишь !
Искать , заморачиваться было некогда .Нужно было быстро,"с ходу" загрузить некий xls именно в ТЗ как самый удобный формат для дальнейшей обработки.
Воспользовался.
ilya.don; Шёпот теней; +2 Ответить
36. aleks_pro 27.10.11 16:38 Сейчас в теме
Выдает ошибочку. Будем смотреть
Шёпот теней; +1 Ответить
37. Stepan_1c 13.12.11 04:59 Сейчас в теме
Спасибо за работу=)
Шёпот теней; +1 Ответить
38. lushka 8 27.12.11 11:03 Сейчас в теме
Спасибо, очень выручили :)
39. Boudybuilder 66 22.03.12 14:42 Сейчас в теме
Спасибо за работу. Будем смотреть что за зверь такой.
Ато я тут парюсь со своей разработкой.
Хотелось чтоб скачивать значения из прайса можно было в регистр НоменклатураКонтрагентов , а потом уже загружать из разных фирм прасов цены , вот так чтоб каждый день свеженькую информацию иметь .
Да и кстати прайсы то у всех с разными структурами колонок. Один тут такой хитрый прайс есть , не знаю пока как его обрабатывать , та характеристика в отдельной колонке, но не в отдельных строках , а по одной номенкдлатуре все характеристики збиты в одну яейку через запятую , а вот это уже мне не нравится...
Другое дело когда товар сразной характеристикой разложен отдкльно по строках , да еще и колонка с кодом товара есть. Но ниче. Нет ничего невозможного , будем пробовать делать.
40. Boudybuilder 66 22.03.12 14:42 Сейчас в теме
(Спасибо за работу. Будем смотреть что за зверь такой.
Ато я тут парюсь со своей разработкой.
Хотелось чтоб скачивать значения из прайса можно было в регистр НоменклатураКонтрагентов , а потом уже загружать из разных фирм прасов цены , вот так чтоб каждый день свеженькую информацию иметь .
Да и кстати прайсы то у всех с разными структурами колонок. Один тут такой хитрый прайс есть , не знаю пока как его обрабатывать , та характеристика в отдельной колонке, но не в отдельных строках , а по одной номенкдлатуре все характеристики збиты в одну яейку через запятую , а вот это уже мне не нравится...
Другое дело когда товар сразной характеристикой разложен отдкльно по строках , да еще и колонка с кодом товара есть. Но ниче. Нет ничего невозможного , будем пробовать делать
Шёпот теней; +1 Ответить
41. Шёпот теней 1768 22.03.12 22:54 Сейчас в теме
42. 7OH 32 03.12.13 18:31 Сейчас в теме
А не подскажете пример, такой же, но с возможностью редактировать загруженное.
Загрузить на чтение у меня и так получилось.
При программном создании колонки - получается только читать.
43. Шёпот теней 1768 04.12.13 09:00 Сейчас в теме
(42) для возможности непосредственного редактирования надо указать ТИП колонок таблицы ... вот ...
Оставьте свое сообщение
Вопросы с вознаграждением