Сохранить ТабДок в Excel

1. Qwert_23 02.09.16 08:37 Сейчас в теме
табдок=новый табличныйДокумент;	
   	Отказ = Ложь;
	//Открываем эксель файл
	Попытка
	Эксель = Новый COMОбъект("Excel.Application") ;
	Книга = Эксель.WorkBooks.Open(Файл);  
	Исключение
	Сообщить(ОписаниеОшибки());
	Возврат;
	КонецПопытки;
	Лист = Книга.WorkSheets(НазваниеЛиста);
        **************
        *************
        ТабДок.Записать(книга,ТипФайлаТабличногоДокумента.XLSX); 
        Книга.Save();
	Книга.Close();
	Эксель.Quit();

Показать


Если делаю ТабДок.Показать(); то все показывает, результат выводится. А в Excel не выводится
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. m-serg74 46 02.09.16 08:42 Сейчас в теме
(1) Светлана_23, а просто вот так не хватит?

табдок=новый табличныйДокумент;    
//здесь работа по заполнению ТабДок
ТабДок.Записать("здесь путь к файлу куда сохранять", ТипФайлаТабличногоДокумента.XLSX);
42. PiotrLoginov 03.09.16 20:19 Сейчас в теме
Как это часто бывает, правильный ответ был в (2). Ну еще плюс "//создайте сами под своим пользователем папку "000" на диске Д, чтоб точно доступна была"
9. mkalimulin 1170 02.09.16 09:57 Сейчас в теме
(1) Светлана_23,
ТабДок.Записать(ФАЙЛ...
3. Qwert_23 02.09.16 08:46 Сейчас в теме
ТабДок.Записать(Файл, ТипФайлаТабличногоДокумента.XLSX);
по причине:
Ошибка доступа к файлу 'D:\1.xlsx'
4. VasRogov 5 02.09.16 09:14 Сейчас в теме
(3) зайдите в диспетчер задач и "убейте" процессы Эксель. После этого попробуйте.
5. Qwert_23 02.09.16 09:25 Сейчас в теме
Убирала уже все. самое интересно, что у меня вчера все работало. потом к папке дали доступ и все. но я стала сохранять просто на диск D. все равно не хочет работать
6. v3rter 02.09.16 09:27 Сейчас в теме
Сначала ТабДок.Записать, потом Эксель = Новый COMОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open(Файл);
в конце Excel.ActiveWorkbook.Save(); // если менялось что-то программно в экселе и
Excel.Visible = 1; // показать окно экселя
Правда, переключить фокус на эксель будет проблемой. Знаю, как это сделать внешней консольной утилитой cmdow, но проще объяснить пользователю када тыкать мышем.
7. Qwert_23 02.09.16 09:38 Сейчас в теме
нет. открывает пустой файл
8. v3rter 02.09.16 09:54 Сейчас в теме
закомментируйте
    //Книга.Close();
    //Эксель.Quit();
10. Qwert_23 02.09.16 10:04 Сейчас в теме
так делала уже, ошибка доступа к файлу
11. json 3308 02.09.16 10:11 Сейчас в теме
(10) Светлана_23,
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);

а так?
12. v3rter 02.09.16 10:16 Сейчас в теме
Или
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
// 
Эксель.ActiveWorkbook.SaveAs
13. Qwert_23 02.09.16 10:16 Сейчас в теме
Тоже пустой создается
14. v3rter 02.09.16 10:17 Сейчас в теме
Если вместо ТабДок.Записать поставить временно ТабДок.Показать - выйдет пустая таблица?
15. Qwert_23 02.09.16 10:20 Сейчас в теме
нет. все выводится в табдок. фигня именно с Excel'm
16. v3rter 02.09.16 10:24 Сейчас в теме
Если вместо ТабДок.Записать поставить временно ТабДок.Показать - выйдет пустая таблица?

Вот как у меня:
		Состояние("Сохранение промежуточного файла...");
		ПолноеИмяФайла = ПолучитьИмяВременногоФайла("xlsx");	

		// ДокументРезультат - окончательно сформированный табличный документ
		ДокументРезультат.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX);

		Excel = Новый COMОбъект("Excel.Application");
		Excel.WorkBooks.Open(ПолноеИмяФайла); 
		Excel.Visible = 0;

		Excel.ActiveWindow.DisplayWorkbookTabs = 1; 
		Excel.ActiveWindow.TabRatio = 0.6;

		// работа с экселевскими методами
		// Состояние("Обработка данных...");
		
		Excel.ActiveWorkbook.Save();
		Excel.Visible = 1;
		Excel = Неопределено;
		Состояние("Готово.");
Показать


Есть ещё подводный камень - если вместо Excel.ActiveWorkbook.Save() сделать второй раз ДокументРезультат.Записать, то документ перезапишется и все изменения пропадут.

Последовательность действий - сначала ТабличныйДокумент.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX), затем Эксель.Open, затем, если нужно, действия в экселе, затем Excel.ActiveWorkbook.Save; Excel.Visible = 1;
17. Qwert_23 02.09.16 10:35 Сейчас в теме
если табДок.Показать() таблица не пустая. если я ее делаю руками сохранить как все работает. не работает именно программное сохранение в ексель
18. v3rter 02.09.16 10:36 Сейчас в теме
(17) Светлана_23, а в ТипФайлаТабличногоДокумента.XLS (не XLSX) сохраняет?
19. Qwert_23 02.09.16 10:42 Сейчас в теме
20. m-serg74 46 02.09.16 10:54 Сейчас в теме
(19) Светлана_23, что то какие то "Gypsy tales"
21. m-serg74 46 02.09.16 10:55 Сейчас в теме
(19) Светлана_23, случайно не локальный файл указываете, а код выполняется на сервере?
22. Qwert_23 02.09.16 11:05 Сейчас в теме
база локальная у меня. это внешняя обработка. может скинуть ее? посмотрите работает ли у вас
23. m-serg74 46 02.09.16 11:08 Сейчас в теме
(22) Светлана_23, скиньте, правда я не знаю, что там проверять, если ругается на нет доступа
24. v3rter 02.09.16 11:10 Сейчас в теме
Можете приложить в виде файла к сообщению, например.
25. Qwert_23 02.09.16 11:13 Сейчас в теме
(24) v3rter, ткните носом где тут файл прикрепить можно
26. m-serg74 46 02.09.16 11:16 Сейчас в теме
вот тут
Прикрепленные файлы:
27. Qwert_23 02.09.16 11:25 Сейчас в теме
Спасибо! Я тупень!!:)
Прикрепленные файлы:
Журналы.epf
30. m-serg74 46 02.09.16 11:43 Сейчас в теме
(27) Светлана_23, ну е-мае!!!
Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	табдок=новый табличныйДокумент;	
    Отказ = Ложь;
	Попытка
	Эксель = Новый COMОбъект("Excel.Application") ;
	Книга = Эксель.WorkBooks.Open(Файл); 
	Исключение
	Сообщить(ОписаниеОшибки());
	Возврат;
	КонецПопытки;
Показать

открываем файл в екселе
    ТабДок.Записать(книга ,ТипФайлаТабличногоДокумента.XLSX);    
   Книга.Save();
   Книга.Close();


и пытаемся ХЗ каким-то извращенным способом записать

писал же сделайте без всякого екселя, просто:

лФайл = "D:\000\1.xlsx"; //создайте сами под своим пользователем папку "000" на диске Д, чтоб точно доступна была
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область(1,1).Текст = "Проверка";
ТабДок.Записать(Файл, ТипФайлаТабличногоДокумента.XLSX);
28. Qwert_23 02.09.16 11:34 Сейчас в теме
 Отказ = Ложь;
	Попытка
	Эксель = Новый COMОбъект("Excel.Application") ;
	Книга = Эксель.WorkBooks.Open(Файл); 
	Исключение
	Сообщить(ОписаниеОшибки());
	Возврат;
	КонецПопытки;
    Лист = Книга.WorkSheets(НазваниеЛиста);

Лист. Cells(1,1).Value = ОбластьЗаголовок.Параметры.начдата;
Книга.Save();
Книга.Close();
Показать

а вот так отрабатывает. может дело в табдок?
29. json 3308 02.09.16 11:43 Сейчас в теме
(28) Светлана_23, ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX) будет отрабатывать только начиная с платформы 8.3.6. Возможно у вас более ранняя версия платформы
31. m-serg74 46 02.09.16 11:44 Сейчас в теме
(29) yurii_host, он не ругается у нее на тип файла, а ругается на доступ к файлу
BenDigget; +1 Ответить
32. json 3308 02.09.16 11:46 Сейчас в теме
33. m-serg74 46 02.09.16 11:48 Сейчас в теме
(32) yurii_host,
Тоже пустой создается


и что я тут должен увидеть в пост 13?
34. Qwert_23 02.09.16 12:03 Сейчас в теме
   табдок=новый табличныйДокумент;    
    Отказ = Ложь;
    Попытка
    Эксель = Новый COMОбъект("Excel.Application") ;
    Книга = Эксель.WorkBooks.Open(Файл); 
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
Показать

убрала я все это и заработало
35. Qwert_23 02.09.16 12:09 Сейчас в теме
а этот файл я смогу дозаписывать?
36. m-serg74 46 02.09.16 12:30 Сейчас в теме
(35) Светлана_23, ХЗ что Вы имеете ввиду под "дозаписывать"...

в общем случае:
прочитали - изменили - записали
37. Qwert_23 02.09.16 12:44 Сейчас в теме
(36) m-serg74,
я хочу туда проверку вставить на заполненность файла и каждый раз, при запуске обработки чтобы файл дозаписывался. ЕЕ запускать будут каждый день. когда месяц заканчивается нужно создавать новый лист.
38. m-serg74 46 02.09.16 12:56 Сейчас в теме
(37) Светлана_23, см. (36)

прочитали - изменили - записали
39. Qwert_23 02.09.16 13:07 Сейчас в теме
(38) m-serg74, это да. но оно пишется вниз сплошной таблицей. а параметр дата вверху заменяется
41. m-serg74 46 02.09.16 13:55 Сейчас в теме
(39) Светлана_23, и в чем трудность? прочитали - вверху поменяли дату - внизу что нужно добавили - записали

Средствами 1С или екселя или еще чего то - это уже вопрос третий
40. v3rter 02.09.16 13:48 Сейчас в теме
Для 8.1, 8.2 можно выкрутиться, сохраняя в xls, затем пересохраняя средствами экселя в xlsx

		Состояние("Сохранение промежуточного файла...");
		ПолноеИмяФайла = ПолучитьИмяВременногоФайла("xls");	
		ДокументРезультат.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);

		Excel = Новый COMОбъект("Excel.Application");
		Excel.WorkBooks.Open(ПолноеИмяФайла); 
		Excel.Visible = 0;

		Excel.ActiveWindow.DisplayWorkbookTabs = 1; 
		Excel.ActiveWindow.TabRatio = 0.6;         

		FullName = Excel.ActiveWorkbook.FullName;            
		Excel.DisplayAlerts = false;
		Excel.ActiveWorkbook.SaveAs(FullName+"x", 51);
Показать


В моём случае файл пересохраняется со временным именем + "x".
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот