Чтение/Запись документа Excel 2007 без офиса, без ВК. (с примером для 7.7, 8.1 и 8.2 на управляемых формах)

Внешний отчет, обработка для 1С: Предприятие 8.1; 1С: Бухгалтерский учет 7.7; 1С: Оперативный учет 7.7; 1С: Расчет 7.7

Чтение/Запись документа Excel 2007 без офиса, без ВК. (с примером для 7.7, 8.1 и 8.2 на управляемых формах)

Чтение/запись документ Excel 2007 без установленного Excel'а, без внешних компонент, исключительно средствами 1С (7.7, 8.1, 8.2 на управляемых формах).

Написано в ознакомительных целях, по аналогии с http://infostart.ru/projects/2365/

или посмотреть и скачать все файлы (2)

Использование (1С 8.x): вставляете обработку в конфигурацию и используете ее методы:

Процедура ОткрытьФайлЭкзекль2007(ПутьКФайлу)
 Экзель = Обработки.Excel2007.Создать();
 
 Если НЕ Экзель.ОткрытьФайл(ПутьКФайлу) Тогда
  Предупреждение("Файл " + ПутьКФайлу + " не открыт!");
  Возврат;

КонецЕсли;
 
 Если НЕ Экзель.ОткрытьЛист(1) Тогда
  Предупреждение("Лист 1 не открыт!");
  Возврат;

КонецЕсли;
 
 Сообщить("Количество строк: " + Экзель.Лист.Количество());
 Сообщить("Количество колонок: " + Экзель.Лист.Колонки.Количество());
КонецПроцедуры

Процедура СоздатьФайлЭкзель2007(ПутьКФайлу)
 //заполняем ТЗ
 ТЗ = Новый ТаблицаЗначений;
 ТЗ.Колонки.Добавить("К1");
 ТЗ.Колонки.Добавить("К2");
 
 Стр = ТЗ.Добавить();
 Стр.К1 = "Номенклатура";
 Стр.К2 = "Количество";
 
 Стр = ТЗ.Добавить();
 Стр.К1 = "Хлеб";
 Стр.К2 = 10;
 
 Стр = ТЗ.Добавить();
 Стр.К1 = "Мясо";
 Стр.К2 = 14;
 
 //сохраняем тз в экзель
 Экзель = Обработки.Excel2007.Создать();
 Экзель.Лист = ТЗ;
 Экзель.Записать(ПутьКФайлу);
 
КонецПроцедуры

Использование (1С 7.7): добавляете из демо-базы все из глобального модуля в свой, файлшаблона в папку с конфигурацией и используете по примеру:

Процедура ОткрытьФайлЭкзекль2007(ПутьКФайлу)
  Если экзель_ОткрытьФайл(ПутьКФайлу) = 0 Тогда
  Предупреждение("Файл " + ПутьКФайлу + " не открыт!");
  Возврат;
  КонецЕсли;
 
  Если экзель_ОткрытьЛист(1) = 0 Тогда
  Предупреждение("Лист 1 не открыт!");
  Возврат;
  КонецЕсли;
 
  Сообщить("Количество строк: " + экзель_Лист.КоличествоСтрок());
  Сообщить("Количество колонок: " + экзель_Лист.КоличествоКолонок());
  Сообщить("***");
 
  //выведем 1 строку
  Для сч = 1 По экзель_Лист.КоличествоКолонок() Цикл
  Сообщить(экзель_Лист.ПолучитьЗначение(1, сч));
  КонецЦикла;
КонецПроцедуры
//*******************************************
Процедура СоздатьФайлЭкзель2007(ПутьКФайлу)
  //заполняем ТЗ
  ТЗ = СоздатьОбъект("ТаблицаЗначений");
  ТЗ.НоваяКолонка("К1");
  ТЗ.НоваяКолонка("К2");
 
  ТЗ.НоваяСтрока();
  ТЗ.К1 = "Номенклатура";
  ТЗ.К2 = "Количество";
 
  ТЗ.НоваяСтрока();
  ТЗ.К1 = "Хлеб";
  ТЗ.К2 = 10;
 
  ТЗ.НоваяСтрока();
  ТЗ.К1 = "Мясо";
  ТЗ.К2 = 14;
 
  //сохраняем тз в экзель
  экзель_Лист = ТЗ;
  Если экзель_Записать(ПутьКФайлу) = 1 Тогда
  Сообщить("Создан " + ПутьКФайлу);
  ЗапуститьПриложение(ПутьКФайлу);
  КонецЕсли;
КонецПроцедуры
 

http://www.dushelov.ru

Результат демо-кода

Результат демо-кода

На публикацию ссылаются:

Оценка сообщества

146

Поставьте плюс, если вы рекомендуете данную публикацию к прочтению и использованию.
Плюс добавляет публикацию в Мои рекомендации.

[+] Рекомендую   [−] Не тратить время
Если рейтинг упадет до -5, то публикация автоматически скроется.