|
v7: Как указать способ сохранения в LibreOffice (или OpenOffice), в коде? | ☑ | ||
---|---|---|---|---|
0
aka AMIGO
27.08.15
✎
11:08
|
Макрос эту операцию "Сохранить как", почему-то не отлавливает.
Пример взят отсюда: Книга знаний: Интеграция OpenOffice Calc с 1С 7.7 там операторы сохранения в "Excel 97" такие: SaveParam = scr.Eval("ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); SaveParam.Name = "FilterName"; SaveParam.Value = "MS Excel 97"; scr.CodeObject.SetItem(0,SaveParam); Document.storeToURL("file:///c:/Test.xls",Массив); Мне-же надо в Excel 2007.. Поискал в инете, что-то не видно.. |
|||
1
aka AMIGO
27.08.15
✎
11:10
|
да, MS Office у меня на компе не установлен
|
|||
2
alex4x
28.08.15
✎
11:05
|
А можно в HTML сохранить и потом открыть в опен офисе!
Я так делал. |
|||
3
mehfk
28.08.15
✎
11:09
|
||||
4
aka AMIGO
28.08.15
✎
11:12
|
(2) не, это для меня непреодолимо :)
(3) вот, спасибо! а то я уж отчаялся получить инфу :) |
|||
5
mehfk
28.08.15
✎
11:12
|
Calc MS Excel 2007 XML
|
|||
6
mehfk
28.08.15
✎
11:13
|
||||
7
aka AMIGO
28.08.15
✎
11:34
|
(5) (6) жаль, если я правильно понял, для 2007 возможен только IMPORT
Ладно, спасибо в любом случае, а мои бушки обойдутся и *.xls в 95-м :) |
|||
8
aka AMIGO
28.08.15
✎
11:43
|
Функция мПрочитатьТабличныйДокументИзOpenOffice(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1)
ОчиститьОкноСообщений(); Попытка scr = СоздатьОбъект("MSScriptControl.ScriptControl"); scr.language = "javascript"; scr.eval("MyArray=new Array()"); ServiceManager=СоздатьОбъект("com.sun.star.ServiceManager"); scr.AddObject("ServiceManager",ServiceManager); scr.eval("MyArray[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); scr.eval("MyArray[0].Name='Hidden'"); scr.eval("MyArray[0].Value=true"); Массив = scr.eval("MyArray"); Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Document = Desktop.LoadComponentFromURL("file://localhost/"+ИмяФайла, "_blank", 0, Массив); Листы = Document.getSheets(); //Лист = Листы.getByIndex(0); Лист = Листы.getByIndex(1); Исключение Сообщить("Ошибка."); Возврат "-1"; КонецПопытки; ТабличныйДокумент=Document; oCell = Лист.GetCellbyPosition(0, 0); oCursor = Лист.createCursorByRange(oCell); oCursor.GotoEndOfUsedArea(1); aAddress = oCursor.RangeAddress; ВсегоКолонок = aAddress.EndColumn; ВсегоСтрок = aAddress.EndRow; Сообщить("Количество строк в документе: " + (ВсегоСтрок+1) + " |Количество столбцов в документе: " + (ВсегоКолонок+1)); begCol = 0; begRow = 1; endCol = ВсегоКолонок-1; endRow = ВсегоСтрок; //rem -- из макроса -------------------------------------------------------------------- //dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") // //dim args1(0) as new com.sun.star.beans.PropertyValue //args1(0).Name = "Nr" //args1(0).Value = 2 // //dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1()) //rem ---------------------------------------------------------------------- //dim args2(0) as new com.sun.star.beans.PropertyValue //args2(0).Name = "ToPoint" //args2(0).Value = "$A$487:$I$492" // //dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2()) // //rem ---------------------------------------------------------------------- //dim args3(0) as new com.sun.star.beans.PropertyValue //args3(0).Name = "Flags" //args3(0).Value = "SVDFN" // //dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args3()) Лист = Листы.getByIndex(0); //потому, что далее: "JumpToTable" dispatcher = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper"); scr.eval("args1=new Array()"); scr.eval("args1[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); scr.eval("args1[0].Name = 'Nr'"); scr.eval("args1[0].Value = 2"); //номер листа для чистки args = scr.eval("args1"); dispatcher.executeDispatch(document.CurrentController.Frame, ".uno:JumpToTable", "", 0, args); scr.eval("args2=new Array()"); scr.eval("args2[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); scr.eval("args2[0].Name='ToPoint'"); scr.eval("args2[0].Value='$A$1:$I$"+endRow+"'"); args = scr.eval("args2"); //dispatcher = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper"); dispatcher.executeDispatch(Document.CurrentController.Frame, ".uno:GoToCell", "", 0, args); scr.eval("args3=new Array()"); scr.eval("args3[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); scr.eval("args3[0].Name = 'Flags'"); scr.eval("args3[0].Value = 'SVDFN'"); args = scr.eval("args3"); dispatcher.executeDispatch(document.CurrentController.Frame, ".uno:Delete", "", 0, args); scr.eval("Массив=new Array()"); Массив=scr.eval("Массив"); SaveParam=Document.setPropertyValue("FilterName","MS Excel 97"); scr.eval("Массив[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); scr.eval("Массив[0].Name='FilterName'"); scr.eval("Массив[0].Value='MS Excel 97'"); Document.storeToURL("file:///" + "C:/ДругоеСТО/"+"Отчет.xls",Массив); Document.unLockControllers(); Document.removeActionLock(); Document.Close(-1); Возврат "+1"; КонецФункции |
|||
9
aka AMIGO
28.08.15
✎
11:47
|
Вот что получилось из моих попыток.
ИмяФайла, что читается в начале кода = файл.xlsm выходной файл Отчет.xls Сформирован правильно, бантики развешивать - уже понтов нет, есть очередное задание-хотелка, ей и буду заниматься :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |