Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 сен 2024, 04:18

Выгрузка в Excel из 1С

Автор v_kuzmin, 11 мар 2012, 10:22

0 Пользователей и 1 гость просматривают эту тему.

sergejK74

Если сильно не замарачиваться, то так
&НаСервере
Процедура ВыгрузитьВЭксель()     
Попытка
Эксель = Новый COMОбъект("Excel.Application")
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;

ВыборкаДокументов= Документы.Задание.Выбрать();
    Эксель.SheetsInNewWorkbook  = 1;

Книга=Эксель.Workbooks.Add();
КоличествоЛистовВКниге = 1;


Пока ВыборкаДокументов.Следующий() цикл
Лист = Книга.Sheets.Add();
Лист.Name  = Строка(ВыборкаДокументов.Номер);
Для Каждого Строка из ВыборкаДокументов.Ведомость Цикл
НомерСтроки=Строка.НомерСтроки;
Лист.Cells(НомерСтроки, 1).Value = Строка(Строка.Студент);
Лист.Cells(НомерСтроки, 2).Value = Строка(Строка.ПН);
Лист.Cells(НомерСтроки, 3).Value = Строка(Строка.ВТ);
Лист.Cells(НомерСтроки, 4).Value = Строка(Строка.СР);
Лист.Cells(НомерСтроки, 5).Value = Строка(Строка.ЧТ);
Лист.Cells(НомерСтроки, 6).Value = Строка(Строка.ПТ);
Лист.Cells(НомерСтроки, 7).Value = Строка(Строка.СБ);
Лист.Cells(НомерСтроки, 8).Value = Строка(Строка.ВС);
КонецЦикла;
КоличествоЛистовВКниге = КоличествоЛистовВКниге + 1;

КонецЦикла;   

Эксель.Sheets(КоличествоЛистовВКниге).Delete();

Попытка
Книга.SaveAs("C:\Users\Администратор\Downloads\1с");

Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
Возврат;
КонецПопытки;
Эксель.Application.Quit();

КонецПроцедуры
Кнопочка Спасибо - слева!

v_kuzmin

sergejK74 Спасибо огромное всё работает.
а вот тут ещё такая штука..)у меня выбираются даты начала и конца недели, как можно сделать чтобы колонки подписывались к примеру"ПН 26.03"

sergejK74

Я уже где то тебе на этот вопрос отвечал, поищи
Кнопочка Спасибо - слева!

v_kuzmin

Цитата: sergejK74 от 25 мар 2012, 09:00
Я уже где то тебе на этот вопрос отвечал, поищи
ааа функция формат да?

v_kuzmin

а можно сделать чтобы сами создавались и заполнялись?

v_kuzmin


v_kuzmin

Всем привет.У меня тут есть вопрос по загрузке данных из excel  в 1с я решил не создавать новую тему может найдутся знатоки...
Вот выгрузил я данные в ексель (см предыдущие сообщения),что-то изменил и теперь мне надо обратно загрузить эти данные или вообще создал новый документ ексель и хочу его загрузить в 1с. т.е. нужно чтобы создавался новый документ...
Вопрос:могу ли я использовать цикл для создания документов такой как любезно предложил sergejK74 тока создавать им доки?
Код самой процедуры (только она писал для загрузки в таблицу значений я пока не поправлял):

&НаКлиенте
Процедура ЗагрузитьИзEXCEL(Команда)
   
   Если ПустаяСтрока(Объект.ИмяФайла) Тогда
      Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
      Возврат;
   КонецЕсли;
   
   Попытка
       // Загрузка Microsoft Excel
       Состояние("Загрузка Microsoft Excel...");
       ExcelПриложение = Новый COMОбъект("Excel.Application");
   Исключение
       Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
       Возврат;
   КонецПопытки;
   
   Попытка
      // Открытие файла Microsoft Excel
      Состояние("Открытие файла Microsoft Excel...");
      ExcelФайл = ExcelПриложение.WorkBooks.Open(Объект.ИмяФайла);
   Исключение
      Сообщить("Ошибка открытия файла Microsoft Excel." + Объект.ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
   КонецПопытки;
   
   Попытка
      // Обработка файла Microsoft Excel
      Состояние("Обработка файла Microsoft Excel...");
      // Читаем данные первого листа книги
      ExcelЛист = ExcelФайл.Sheets(1);
      
      // Определить количество строк и колонок выбранного листа книги Excel
      xlCellTypeLastCell = 11;
      ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
      ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
   Исключение
      Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      // Закрыть COM соединение для экономии памяти
       ExcelПриложение.Quit();
   КонецПопытки;
   


   
   // Последовательное чтение строк с выбранного листа
   Для Строка = 2 По ExcelПоследняяСтрока Цикл
            
      // Обработка нажатия Ctrl + Break
      ОбработкаПрерыванияПользователя();
      
      // Добавить данные в табличную часть экранной формы
      Стр=ТаблицаДокумента.Добавить();
      //Стр.N            = Строка;
      
      Попытка
      Стр.Студент = ExcelЛист.Cells(Строка, 2).Value;
      Стр.ПН= ExcelЛист.Cells(Строка, 3).Value;
      Стр.ВТ   = ExcelЛист.Cells(Строка, 4).Value;
=============И Т.Д.=========
      
      Исключение
         // Не редко происходит ошибка конвертации отдельной ячейки документа
         Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      КонецПопытки;
      // Отобразить информацию о ходе выполнения обработки
      Состояние("Обработка файла Microsoft Excel : "
       + "строка " + Строка + " из " + ExcelПоследняяСтрока);
      
    КонецЦикла;
   
    // Закрыть COM соединение для экономии памяти
    ExcelПриложение.Quit();
   
    // Отобразить результаты загрузки в форме элемента
    Объект.ТаблицаДокумента.Значение = ТаблицаДокумента;
    Объект.ТаблицаДокумента.СоздатьКолонки();

   
КонецПроцедуры

Заранее спасибо.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск