Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > 1С: Проблемы и решения > Есть ли в 1С выгрузка таблицы в Excel? |
Автор: igosm 18.08.04, 09:50 |
Есть ли спец функции? Скажем, обращение к ячейкам? |
Автор: DrMort 18.08.04, 10:37 |
Это всё делается через OLE. Данный вопрос многократно обсуждался, воспользуйся для начала поиском, а там уж если что непонятно спрашивай. |
Автор: ZEE 18.08.04, 13:57 |
igosm, вот например выдернул кусок кода из одного документа - смотри разбирайся: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> А = СоздатьОбъект("Excel.Application"); КвоЛистов = А.Worksheets.Count; Для Индекс = 1 По КвоЛистов Цикл спЛистов.ДобавитьЗначение(А.Worksheets(Индекс).Name); КонецЦикла; листНакладной = 0; Если спЛистов.ВыбратьЗначение(,"Выберите лист",листНакладной,) < 1 Тогда Возврат; КонецЕсли; Результат = А.Worksheets(листНакладной).Activate; ИспДиапазон = А.Worksheets(листНакладной).UsedRange; СтрНач = ИспДиапазон.Row; СтрКон = ИспДиапазон.Rows.Count; СтлНач = ИспДиапазон.Column; СтлКон = ИспДиапазон.Columns.Count; НачСтрока = 0; Если ВвестиЧисло(НачСтрока,"Строка начала табличной части накладной",,0,0) = 0 тогда Возврат; КонецЕсли; КонСтрока = 0; Если ВвестиЧисло(КонСтрока,"Строка конца табличной части накладной",,0,0) = 0 тогда Возврат; КонецЕсли; столбецКод = 0; Если ВвестиЧисло(столбецКод,"Колонка кода изделия",,0,0) = 0 тогда Возврат; КонецЕсли; столбецНаименован = 0; Если ВвестиЧисло(столбецНаименован,"Колонка наименования изделия",,0,0) = 0 тогда Возврат; КонецЕсли; столбецКолво = 0; Если ВвестиЧисло(столбецКолво,"Колонка количества",,0,0) = 0 тогда Возврат; КонецЕсли; столбецСумма = 0; Если ВвестиЧисло(столбецСумма,"Колонка суммы",,0,0) = 0 тогда Возврат; КонецЕсли; Для Индекс = НачСтрока По КонСтрока Цикл Состояние("Анализ строк накладной - " + Индекс + "/" + СтрКон); Если СокрЛП(Строка(А.Worksheets(листНакладной).Cells(Индекс, столбецКод).Value+А.Worksheets(листНакладной).Cells(Индекс, столбецНаименован).Value)) = "" Тогда Продолжить; КонецЕсли; // ... Цена = А.Worksheets(листНакладной).Cells(Индекс, СтолбецСумма).Value; Кво = А.Worksheets(листНакладной).Cells(Индекс, СтолбецКолво).Value; // ... // тут что-то делаем с данными // ... КонецЦикла; |
Автор: Darksquall 19.08.04, 11:21 |
Доступ к ячейке активного листа в Excel Excel=СоздатьОбъект("Excel.Application"); w1=Excel.Cells(Ячейка,Столбец); Знач=w1.Value; // Знач-значение ячейки |
Автор: Outlander 23.08.04, 09:32 |
есть еще 1 спрособ. можно просто сохранить уже сформированную страницу в xls то есть <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ... table.write(some.xls,1) excel = createobject("Excel.Application"); excel.open("some.xls"); ; а дальше в excele работаем через VBA |
Автор: Sphinx2001 24.08.04, 00:59 |
Есть еще способ, но более извращенный. Экселевский файл сохраняещь как дбф, а потом работаешь с ним через объект XBase Что то типа этого: Спр = СоздатьОбъект("Справочник.Какойнибудь"); // будем грузить например в справочник ДБ = СоздатьОбъект("XBase"); ДБ.ОкткрытьФайл("exel.dbf"); кс = ДБ.КоличествоЗаписей(); Для А = 1 По Кс Цикл ДБ.Перейти(А); Спр.Новый(); Спр.Наименование = ДБ.Name; Спр.Цена = ДБ.Price; Спр.Записать(); КонецЦикла; ДБ.ЗакрытьФайл(); Маленькое замечение. Если будешь сохранять xls таблицу в дбф, то первая строка у тебя должна будет содержать наименование полей (name,price и тд.) |