|
Выгрузка в xls без установленного MSOffice. | ☑ | ||
---|---|---|---|---|
0
dmrjan
06.08.15
✎
14:15
|
Народ, кто подскажет. Прислали обработку для доработки.
Используется выгрузка в xls. При запуске отчета вылазит ошибка - {Форма.Форма.Форма(31)}: Ошибка при вызове конструктора (COMОбъект) Excel = Новый COMОбъект("Excel.Application"); по причине: Недопустимая строка с указанием класса Обязательна ли для работы обработки наличие MSOffice (использую LibreOffice)? Можно ли обойтись встроенной функцией выгрузки 1с в xls? |
|||
1
Dmitry1c
06.08.15
✎
14:17
|
Обязательна.
Нельзя. |
|||
2
shuhard_серый
06.08.15
✎
14:18
|
(0) [Можно ли обойтись встроенной функцией выгрузки 1с в xls?]
это нельзя определить не видя кода обработки |
|||
3
ДенисЧ
06.08.15
✎
14:18
|
Сформируй печатную форму и сохрани её как ексель...
|
|||
4
vicof
06.08.15
✎
14:18
|
ТабличныйДокумент.Записать (SpreadsheetDocument.Write)
ТабличныйДокумент (SpreadsheetDocument) Записать (Write) Синтаксис: Записать(<ИмяФайла>, <ТипФайлаТаблицы>) Параметры: <ИмяФайла> (обязательный) Тип: Строка. Имя файла, в котором сохраняется табличный документ. <ТипФайлаТаблицы> (необязательный) Тип: ТипФайлаТабличногоДокумента. Формат, в котором будет сохранен табличный документ. Значение по умолчанию: MXL. Описание: Записывает табличный документ в файл. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Примечание: При работе на сервере, веб-клиенте или через внешнее соединение нет возможности сохранять в формате XLS95. Не поддерживается сохранение в PDF картинок типа Метафайл. При работе на веб-клиенте вызов метода выполняет обращение к серверу. При работе на мобильной платформе возможно сохранение только в формат mxl. При записи в файл PDF перенос строк в ячейках документа может быть выполнен с некоторыми отличиями от того, как он выполняется при отображении на экран. Это может повлиять на высоту строк, у которых указана автоматическая высота. Пример: ТабДок.Записать("C:\My Documents\Таблица2.mxl"); -------------------------------------------------------------------------------- Методическая информация |
|||
5
dmrjan
06.08.15
✎
14:21
|
Неужто все так плохо? Как же 1С тогда позволяет выгружать отчеты в xls без предустановленного офиса?
|
|||
6
pavig
06.08.15
✎
14:21
|
(5)
прочитай (4) |
|||
7
Гёдза
06.08.15
✎
14:22
|
1с просто понимает формат xls
|
|||
8
stix2010
06.08.15
✎
14:22
|
>=8.3.5.1999 ТабДок.Записать(имяфайла, Тип)
|
|||
9
dmrjan
06.08.15
✎
14:23
|
(6) понял, попробую
|
|||
10
Поpyчик-4
06.08.15
✎
14:24
|
(5) на инфостарте есть набор процедур для чтения/записи в xlsx без установленного MSOffice. Поиск
|
|||
11
Гёдза
06.08.15
✎
14:25
|
(10) уже не актуально. 8.3.6 уже умеет и читать
|
|||
12
dmrjan
06.08.15
✎
14:26
|
(11) На 8.2 еще сидим.
|
|||
13
dmrjan
06.08.15
✎
14:27
|
(10) Заказчику нужен именно xls.
|
|||
14
Гёдза
06.08.15
✎
14:30
|
(13) Раз нужен - тогда ставь Excel
|
|||
15
vicof
06.08.15
✎
14:36
|
(14) Заказчик не хочет платить за эксель)
|
|||
16
stix2010
06.08.15
✎
16:35
|
есть еще конвертация c помощью yoksel.exe - вход mxl выход xls
|
|||
17
GenV
06.08.15
✎
16:41
|
10+1
Можно сохранять данные в xml в правильном формате, затем запаковать в zip, затем переименовать архив в Эксель - будет Эксель файл. На инфостарте по-моему был пример такой обработки. |
|||
18
Serginio1
06.08.15
✎
16:54
|
||||
19
Serginio1
06.08.15
✎
16:56
|
Типа такого
Процедура ЗаписатьТзВЭксель(тз) // Допустимые типы // adDouble = 5 Значение с плавающей точкой двойной точности // adDAte = 7 Дата // adCurrency = 6 Денежная сумма // adBoolean = 11 Булево // adVarWChar = 202 Символьная строка Unicode, заканчивающаяся NULL // adLongVarWChar = 203 Длинное строковое значение ИмяФайлаЭксель = "D:\Export.xlsx"; // Имя создаваемого файла Файл=Новый Файл(ИмяФайлаЭксель); Если файл.Существует() Тогда УдалитьФайлы(ИмяФайлаЭксель); КонецЕсли; // Собираем строку подключения //СтрокаПодключения = " //|Provider=Microsoft.Jet.OLEDB.4.0; //|Data Source="+ИмяФайлаЭксель+"; //|Extended Properties=""Excel 8.0;HDR=Yes;"";"; СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+ИмяФайлаЭксель; СтрокаПодключения = СтрокаПодключения + ";Mode=Share Deny Write; Extended Properties = "+"""Excel 12.0"+";HDR=Yes;IMEX=1"";"; ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ИмяФайлаЭксель+";Extended Properties=Excel 12.0 Xml;"; Connection = Новый COMОбъект("ADODB.Connection"); //Catalog = Новый COMОбъект("ADOX.Catalog"); //Catalog.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ИмяФайлаЭксель+";Extended Properties=Excel 12.0 Xml;"; //Table = New COMОбъект("ADOX.Table"); // Table.Name = "TestTable"; // Catalog.Tables.Append(Table); // Catalog=""; // Создаем соединение Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(ActiveConnection); Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandType = 1; СоздатьТаблицуИКоманд(Тз,Connection,Command); Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(СтрокаПодключения); Command.ActiveConnection = Connection; Command.CommandType = 1; Параметры= Command.Parameters; ТекстВопросов=" VALUES("; ТекстКоманды= "INSERT INTO [Лист1]("; Для каждого парам из Параметры Цикл ТекстКоманды=ТекстКоманды+парам.Name+","; ТекстВопросов=ТекстВопросов+"?," КонецЦикла; ТекстКоманды=Лев(ТекстКоманды,стрДлина(ТекстКоманды)-1)+") "+Лев(ТекстВопросов,стрДлина(ТекстВопросов)-1)+")"; Сообщить(ТекстКоманды); Command.CommandText=ТекстКоманды; // Command.CommandText="INSERT INTO [Лист1$](Марка,Номер,Количество,Цена,Название) VALUES('Марка','Номер',1,2.2,'Название')"; // Command.Execute(); //возврат; Command.prepared=истина; //Command.CommandText=ТекстКоманды; Для каждого Выборка из Тз Цикл Для каждого парам из Параметры Цикл Значение=Выборка[Парам.Name]; Если Парам.Type=203 Тогда Парам.Size=СтрДлина(Значение)+1; КонецЕсли; Парам.Value=Значение; КонецЦикла; Command.Execute(); КонецЦикла; // // Закрываем соединение Command = Неопределено; Connection.Close(); Connection = Неопределено; КонецПроцедуры |
|||
20
spectre1978
06.08.15
✎
20:04
|
(0) как вариант, можно еще сделать автоматизацией через UNO в calc все то же что делалось в Excel. Но это джедайский путь :)
|
|||
21
Провинциальный 1сник
06.08.15
✎
20:39
|
(12) Переход на 8.3 бесплатный, если че. Зачем заморачиваться с ком-оле, если можно использовать нативные возможности платформы?
|
|||
22
Попытка1С
06.08.15
✎
20:48
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |