Работа с Excel из 1С. Не получается программно открыть файл Excel, для редактирования пользователем.
// 1) Заходим в Excel
Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = 0;
Excel.ScreenUpdating = 0;
Excel.EnableEvents = 0;
Excel.Visible = 0;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
Лист = Книга.WorkSheets(1);
// 2) Как-то редактируем Excel
ШапкаОтчетаОбласть = Лист.Range("Шапка");
ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
// 3) Сохраняем Excel
Книга.SaveAs(ИмяВременногоФайла);
// 4) Открываем Excel, для редактирования пользователем
Excel.ReferenceStyle = 1; //Стиль ссылок A1
Excel.EnableEvents=Истина; //разрешена обработка событий экселем
Excel.visible=Истина; //Отобразить файл.
Excel.DisplayAlerts = Истина;
ПоказатьПо теме из базы знаний
Найденные решения
см. вложение.
немного поменял код, также был косяк с макетом екселя, тоже поправил.
немного поменял код, также был косяк с макетом екселя, тоже поправил.
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart (1).epf
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Огромное спасибо, итоговый код:
---
---
мИмяШаблона= "ШаблонРеестр";
ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла);
//1) Заходим в Excel
Excel = Новый COMОбъект("Excel.Application");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
ИмяВременногоФайла2 = ПолучитьИмяВременногоФайла("xlsx");
ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
Лист = Книга.WorkSheets(1);
//2) Как-то редактируем Excel
ШапкаОтчетаОбласть = Лист.Range("Шапка");
ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
//3) Сохраняем Excel
Книга.SaveAs(ИмяВременногоФайла2);
УдалитьФайлы(ИмяВременногоФайла);
// 4) Открываем Excel, для редактирования пользователем
Excel.Visible = Истина;
ПоказатьПроцедура СформироватьПФ_Excel() Экспорт
мИмяШаблона= "ШаблонРеестрПлатежейТНП1";
ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла);
//1) Заходим в Excel
Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = 0;
Excel.ScreenUpdating = 0;
Excel.EnableEvents = 0;
Excel.Visible = 0;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
ДвоичныеДанные.Записать(ИмяВременногоФайла);
Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
Лист = Книга.WorkSheets(1);
//2) Как-то редактируем Excel
ШапкаОтчетаОбласть = Лист.Range("Шапка");
ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
//3) Сохраняем Excel
Книга.SaveAs(ИмяВременногоФайла);
//Книга.Close();
//4) Открываем Excel, для редактирования пользователем
Excel.ReferenceStyle = 1; //Стиль ссылок A1
//Excel.EnableEvents=Истина; //разрешена обработка событий экселем
//Книга.DisplayWorkbookTabs = True;
//Excel.DisplayAlerts = Истина;
Excel.ScreenUpdating = False;
Лист.Visible = "xlSheetVisible";
Excel.ScreenUpdating = True;
Excel.visible = Истина; //Отобразить файл.
//Книга.Close();
//Excel.Quit();
КонецПроцедуры
ПоказатьПопробуйте.
Выкладываю файл внешней обработке - СсылкаНаОбъект привязана к "Реализации товаров и услуг", т.е. обработка отработает в любой типовой (у меня УПП).
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart.epf
см. вложение.
немного поменял код, также был косяк с макетом екселя, тоже поправил.
немного поменял код, также был косяк с макетом екселя, тоже поправил.
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart (1).epf
(13) Светлый ум, я оставлял на сайте .epf с исходным кодом по выгрузке из Excel в 1С (в том числе формирование таблицы Excel из 1С):
http://infostart.ru/public/366601/
Вдруг поможет.
Добавлю в своей публикации ссылку на эту тему. Полезно и лаконично.
Вдруг поможет.
Добавлю в своей публикации ссылку на эту тему. Полезно и лаконично.
(15) timeforlive, да действительно интересная и хорошо оформленная статья, от себя выложил пару плюшек по работе с Excel - продублирую здесь:
//### Примеры работы с Excel ячейками ###
//1) Стандартное форматирование числа
// mSheet.Cells(row,i).Value=Формат(стр[мИмя],"ЧДЦ=2; ЧН=; ЧГ=0");
//2) Стандартное форматирование даты
// ШапкаОтчета.Find("<ДатаОтчета>").Value = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");
//3)Программная установка формул в ячейку - Excel в 1с.
а) Например, нужно посчитать сумму в столбце 8 в той же строке из столбца 1+ столбца 2.
СтрокаСФормулой = "=RC[-7]+ RC[-6]";
Лист.Cells(НомерСтроки,НомерКолонки).Formula = СтрокаСФормулой.
---------------------
б) Считаем итого по строкам:
//Шаблон формулы: "=SUM(F13:F14)";
СтрокаСФормулойИтогоОстатки = "=SUM(F" + Строка(НомерИсходнойСтрокиОстаткиОборотыExcel) +
":F" + Строка(НомерСтрокиОстаткиОборотыДляФормулы) + ")";
ТекСтрокаПодвалИтогоОстаток.Value = СтрокаСФормулойИтогоОстатки;
//### Примеры работы с Excel ячейками ###
//1) Стандартное форматирование числа
// mSheet.Cells(row,i).Value=Формат(стр[мИмя],"ЧДЦ=2; ЧН=; ЧГ=0");
//2) Стандартное форматирование даты
// ШапкаОтчета.Find("<ДатаОтчета>").Value = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");
//3)Программная установка формул в ячейку - Excel в 1с.
а) Например, нужно посчитать сумму в столбце 8 в той же строке из столбца 1+ столбца 2.
СтрокаСФормулой = "=RC[-7]+ RC[-6]";
Лист.Cells(НомерСтроки,НомерКолонки).Formula = СтрокаСФормулой.
---------------------
б) Считаем итого по строкам:
//Шаблон формулы: "=SUM(F13:F14)";
СтрокаСФормулойИтогоОстатки = "=SUM(F" + Строка(НомерИсходнойСтрокиОстаткиОборотыExcel) +
":F" + Строка(НомерСтрокиОстаткиОборотыДляФормулы) + ")";
ТекСтрокаПодвалИтогоОстаток.Value = СтрокаСФормулойИтогоОстатки;
(13) Светлый ум, насчет формата:
Я попробовал ваш макет из обработки выгрузить с расширением xls и открыть в экселе, получил ошибку формата.
Перепаковал файл, переименовал в xlsx, при попытке открытия получил опять несоответствие формата, но файл открылся.
При попытке пересохранения файла ексель предложил считать его шаблоном (xltx).
И только когда принудительно записал как xlsx, файло стало открываться без лишних вопросов.
Я попробовал ваш макет из обработки выгрузить с расширением xls и открыть в экселе, получил ошибку формата.
Перепаковал файл, переименовал в xlsx, при попытке открытия получил опять несоответствие формата, но файл открылся.
При попытке пересохранения файла ексель предложил считать его шаблоном (xltx).
И только когда принудительно записал как xlsx, файло стало открываться без лишних вопросов.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот