Работа с Excel из 1С

Версия для печатиPDF-версия

Добрый день!
Как перебрать в цикле строк ексель файла программно.

 

Один из вариантов построчного перебора листа Excel такой:

// Подключение к Excel
Попытка
	Эксель = Новый COMОбъект("Excel.Application");
Исключение
	Возврат;
КонецПопытки;
Эксель.DisplayAlerts = 0;
Эксель.Visible = 0;  

// Открытие файла
Попытка
	Эксель.Application.Workbooks.Open(ИмяФайла);
Исключение
	Возврат;
КонецПопытки;

// Перебор строк
КоличествоСтрок = Эксель.Cells(1,1).SpecialCells(11).Row;
Для Сч = 1 По КоличествоСтрок Цикл 
	ЗначениеКолонки1 = Эксель.Cells(Сч, 1).Value);
	...
	ЗначениеКолонкиN = Эксель.Cells(Сч, N).Value);
КонецЦикла;

// Закрытие файла
Эксель.ActiveWorkbook.Close();
Эксель.Quit();

Если необходимо считать определенный диапазон ячеек, то лучше использовать свойство Range.

Доброго Вам дня! Как тоже самое но в 7ке сделать. Нужно заполнить в цикле ексель файл например при переборе табличной части документа. Заранее благодарю.

Примерно как-то так:

Попытка
    Excel = СоздатьОбъект("Excel.Application");
Исключение
    Возврат;
КонецПопытки;
Excel.DisplayAlerts = 0;
Excel.Visible=0;
Книга = Excel.WorkBooks.Add();
Если Книга.Worksheets.Count = 0 Тогда
    Книга.Worksheets.Add();
КонецЕсли;
Лист = Книга.Worksheets(1);                                  
Счетчик = 0;
ТекДокумент.ВыбратьСтроки();
Пока ТекДокумент.ПолучитьСтроку() = 1 Цикл
    Лист.Cells(Счетчик, НомерКолонки).Value = ЗначениеКолонки;
	...
	Счетчик = Счетчик + 1;
КонецЦикла;
Книга.SaveAs(ИмяФайла);
Excel.Quit();

Спасибо огромное. Подскажите как организовать процедуру выбора файла xlsx в 7ке с помощью ВыбратьФайл.

ВыбратьФайл(<ТипДиалога>,<ИмяФайла>,<ИмяНачКаталога>,<ЗаголовокОкна>,<Фильтр>,<Расширение>,<Таймаут>)
Назначение:
Открывает окно диалога выбора/сохранения файла.
Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.
Параметры:
<ТипДиалога> -: 0 - диалог типа <открыть>, 1 - диалог типа <сохранить>;
<ИмяФайла> - переменная, содержащая на входе строку с именем файла, а на выходе - имя выбранного файла;
<ИмяНачКаталога> - переменная, содержащая на входе строку с начальным каталогом, а на выходе - имя выбранного каталога;
<ЗаголовокОкна> - строка с заголовком окна;
<Фильтр> - строка с фильтром отбора файлов (например: 'Все файлы (*.*) |*.*');
<Расширение> - строка с расширением файла по умолчанию;
<Таймаут> - время ожидания отклика пользователя в секундах (необязателен).

Используйте параметр Фильтр.

Завела на форме реквизит Файл тип строка неогр. длины, кнопка выбора и прописала процедуру Выбор()

Процедура Выбор()

ФС. ВыбратьФайл(0,Файл,КаталогИБ(), ,,"*.xlsx",);

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

Она срабатывает только когда нажимаешь ентером по реквизиту открывает с выбором все файлы и возвращает название файла без пути. Как исправить? 
И еще вопрос как колонкам ексель файла задать тип?

 

 

1. По поводу срабатывания процедуры сейчас ничего сказать не могу. Под рукой нет 7ки.

2. Попробуйте задать фильтр в формате "Книга Excel (*.xlsx)|*.xlsx".

3. Имя файла и путь (каталог) помещаются во второй и третий параметры метода ВыбратьФайл(). Если хотите получить полное имя файла, то надо третьим параметром передавать какую-нибудь переменную, а после выбора файла получать полное имя файла: <ИмяНачКаталога> + <ИмяФайла>.

Спасибо! По поводу срабатывания нужно было прописать приначалевыборазначения реквизит. Как хорошо что есть Ваш сайт очень в работе помогает.Я только начала с 1ской работать вопросы постоянно возникают.

Как программно создать шапку с оформлением. Шрифт, цвет, линии огранка?

Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта;//Установка шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта;//Установка размера шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Color = ЦветШрифта;//Установка цвета шрифта в ячейке. Тип переменной ЦветШрифта — число десятичное.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный;//1 - жирный шрифт, 0 - нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив;//1 - наклонный шрифт, 0 - нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый;//2 - подчеркнутый, 1 - нет.
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат;//Установка формата данных ячейки.
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии;//Установка рамок ячейки. 1 - тонкая сплошная.

Спасибо подскажите еще цвет фона ячейки.

Лист.Cells(НомерСтроки,НомерКолонки).Interior.Color = ЦветФона;

Какие номера цветов присвоить для шапки во вложении.

Прикреплённые файлы: 

А не проще сделать шаблон файла и заполнять его данными?

Тоже вариант. А так не подобрать?

Попробуйте перевести из RGB по формуле:

ЦветВExcel = B*65536+G*256+R

Нашёл как формат колонки в excel задать:

	Эксель.Columns(НомерКолонки).Select();
	Эксель.Selection.NumberFormat = "@"; //Текстовый
	Эксель.Selection.NumberFormat = "0,00"; //Числовой с двумя знаками после запятой
	Эксель.Selection.NumberFormat = "m/d/yyyy"; //Дата
	Эксель.Selection.NumberFormat = "0,00%"; //Процентный

Все сделала. Спасибо!