|
Как записать данные в ActiveX компоненту "Microsoft Office Spreadsheet 11.0" | ☑ | ||
---|---|---|---|---|
0
SherifSP
29.01.13
✎
12:58
|
Разместил на форме документа ActiveX, компоненту "Microsoft Office Spreadsheet 11.0", как записать в нее данные с Excel файла
|
|||
1
SherifSP
29.01.13
✎
14:13
|
Ап, ап
|
|||
2
SherifSP
30.01.13
✎
11:35
|
Сохранил xls в xml, но загрузить не могу
|
|||
3
SherifSP
30.01.13
✎
11:35
|
Пишет метод объекта не обнаружен Open
|
|||
4
SherifSP
30.01.13
✎
11:39
|
XLSОбъектКниги = ЭлементыФормы.ЭлементУправления1.Application.Workbooks;
Попытка XLSОбъект = XLSОбъектКниги.Open(ОбъектXLS); Исключение Возврат; КонецПопытки; Подскажите как с компонентой работать |
|||
5
Miss1C
30.01.13
✎
11:43
|
(4) Посмотри методы в справке компоненты, там должен быть хелп
|
|||
6
SherifSP
30.01.13
✎
11:45
|
(5) Там не описано как импортировать(
|
|||
7
Дык ё
30.01.13
✎
12:13
|
(2) если через xml, то
Текст = Новый ТекстовыйДокумент; Текст.Прочитать("C:\ПутьКФайлу\Книга1.xml"); ЭлементыФормы.ЭлементУправления1.XMLData = Текст.ПолучитьТекст(); |
|||
8
SherifSP
30.01.13
✎
12:23
|
{Документ.ПланограммаКДоговору.Форма.ФормаДокумента(148)}: Ошибка при установке значения атрибута контекста (XMLData): Произошла исключительная ситуация (Microsoft Office 2003 Web Components): Компоненту "Электронная таблица Microsoft Office" не удалось загрузить XML-данные.
Документ электронной таблицы XML должен в качестве корневого узла иметь тег <Workbook>. ЭлементыФормы.ЭлементУправления1.XMLData = Текст.ПолучитьТекст(); по причине: Произошла исключительная ситуация (Microsoft Office 2003 Web Components): Компоненту "Электронная таблица Microsoft Office" не удалось загрузить XML-данные. Документ электронной таблицы XML должен в качестве корневого узла иметь тег <Workbook>. |
|||
9
SherifSP
30.01.13
✎
12:23
|
Сейчас попробую добавить этот тег
|
|||
10
Дык ё
30.01.13
✎
12:35
|
(8) а чё у тебя за xml? я просто нажал в экселе файл/сохранить как/тип файла таблица xml 2003 и оно открылось. если оно с русским текстом, скажи еще тексту кодировку utf-8
а так еще можно xls через ado открыть |
|||
11
SherifSP
30.01.13
✎
12:58
|
(10) Подскажи как xls открыть?
|
|||
12
SherifSP
30.01.13
✎
13:13
|
(10) Куда пропал?)
|
|||
13
SherifSP
30.01.13
✎
13:14
|
(10) А как цвет передать xml файлом?
|
|||
14
SherifSP
30.01.13
✎
13:23
|
(10) Оформление xml в теге передает, но компонента загружает только данные
|
|||
15
SherifSP
30.01.13
✎
13:24
|
+(14) Мб потому что считываю данные с xml как текст?
|
|||
16
Дык ё
30.01.13
✎
13:30
|
(11)
ЭлементыФормы.ЭлементУправления1.ActiveSheet.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ПутьКФайлу\Книга1.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""; ЭлементыФормы.ЭлементУправления1.ActiveSheet.CommandText = "SELECT * FROM [Лист1$]"; |
|||
17
Дык ё
30.01.13
✎
13:35
|
(14) там прямого импорта нет. оформление можно передать через буфер обмена. не получится, если исходная задача - отказаться от использования excel
|
|||
18
SherifSP
30.01.13
✎
13:35
|
(16) Пишет не допустимое имя Лист1
|
|||
19
SherifSP
30.01.13
✎
13:37
|
(17) Задача загрузить данные с xls, можно без оформления, но если есть какой то формат который передаст и оформление в компоненту, буду использовать его
|
|||
20
Дык ё
30.01.13
✎
13:37
|
(18) ну я хз как у тебя листы в книге называются. к названию $ прибавь
|
|||
21
FN
30.01.13
✎
13:41
|
Процедура ОткрытьФайлЕксель() //xls
Попытка Ексель = СоздатьОбъект("Excel.Application"); Исключение Предупреждение("Для открытия файлов xls, необходимо наличие программы Microsoft Excel."); Возврат; КонецПопытки; Катал=ВосстановитьЗначение("СуперЛист.ПоследнийКаталог");Файл=""; Если ФС.ВыбратьФайл(0,Файл,Катал,"Укажите файл для открытия:","Файлы Ексель|*.xls*","*.xls,*.xlsx")=0 тогда Возврат; КонецЕсли; Ексель.DisplayAlerts=0; Попытка Ексель.Workbooks.Open(Катал+Файл); Исключение Ексель="";Возврат; КонецПопытки; спЛистов=СоздатьОбъект("СписокЗначений"); для х=1 по Ексель.ActiveWorkbook.Sheets.Count Цикл Данные=Ексель.ActiveWorkbook.Sheets(х).UsedRange; Если Данные.Rows.Count()>1 Тогда спЛистов.ДобавитьЗначение(Ексель.ActiveWorkbook.Sheets(х).cells,Ексель.ActiveWorkbook.Sheets(х).Name); КонецЕсли; КонецЦикла; Если спЛистов.РазмерСписка()=0 Тогда Предупреждение("В указанном файле ("+Файл+") нет данных"); ЗакрытьЕксель(Ексель);Возврат; ИначеЕсли спЛистов.РазмерСписка()=1 Тогда Данные=спЛистов.ПолучитьЗначение(1); Иначе Если спЛистов.ВыбратьЗначение(Данные,"Укажите лист для импорта данных:",,,0)<>1 Тогда ЗакрытьЕксель(Ексель);Возврат; Возврат; КонецЕсли; КонецЕсли; Данные.Copy(); АктивИкс.Объект.WorkSheets.Add(); АктивИкс.Объект.WorkSheets(2).Delete(); Если АктивИкс.Объект.WorkSheets.Count>1 Тогда Для х=-АктивИкс.Объект.WorkSheets.Count по -2 Цикл АктивИкс.Объект.WorkSheets(-х).Delete(); КонецЦикла; КонецЕсли; АктивИкс.Объект.Cells(1,1).Paste(); АктивИкс.Объект.Cells(1,1).Copy(); ЗакрытьЕксель(Ексель); КонецПроцедуры это код из 7.7 больше примеров смотри http://infostart.ru/public/20668/ |
|||
22
SherifSP
30.01.13
✎
13:41
|
(20) А если листа нет, например взял сохранил отчет в xls?
|
|||
23
Дык ё
30.01.13
✎
13:53
|
(22) вот тебе с оформлением :-)
Excel = Новый COMОбъект("Excel.Application"); Excel.Workbooks.Open("C:\ПутьКФайлу\Книга1.xls"); Excel.ActiveSheet.UsedRange.Copy(); ЭлементыФормы.ЭлементУправления1.ActiveSheet.Paste(); |
|||
24
SherifSP
30.01.13
✎
13:54
|
(23) А ну)
|
|||
25
SherifSP
30.01.13
✎
13:59
|
(23) Что то не то)
|
|||
26
SherifSP
30.01.13
✎
14:00
|
(23) То же что и в (16) )
|
|||
27
SherifSP
30.01.13
✎
14:01
|
+(26) Колонки сильно узкие
|
|||
28
Дык ё
30.01.13
✎
14:10
|
(27) тогда, как подсказывает товарищ в (21)
Excel.ActiveSheet.Cells.Copy(); |
|||
29
SherifSP
30.01.13
✎
14:23
|
(21)
АктивИкс.Объект.WorkSheets.Add(); АктивИкс.Объект.WorkSheets(2).Delete(); Если АктивИкс.Объект.WorkSheets.Count>1 Тогда Для х=-АктивИкс.Объект.WorkSheets.Count по -2 Цикл АктивИкс.Объект.WorkSheets(-х).Delete(); КонецЦикла; КонецЕсли; АктивИкс.Объект.Cells(1,1).Paste(); АктивИкс.Объект.Cells(1,1).Copy(); ЗакрытьЕксель(Ексель); АктивИкс - Это компонента? |
|||
30
FN
30.01.13
✎
14:25
|
(29)Да. в твоем случае код будет примерно таким:
Excel = Новый COMОбъект("Excel.Application"); Excel.Workbooks.Open("C:\ПутьКФайлу\Книга1.xls"); Excel.ActiveSheet.UsedRange.Copy(); ЭлементыФормы.ЭлементУправления1.Application.Cells(1,1).Paste(); |
|||
31
SherifSP
30.01.13
✎
14:34
|
В 7 был метод у Списка значений ВыбратьЗначение() Как его заменить в 8.1?
|
|||
32
SherifSP
30.01.13
✎
14:35
|
+(31) ВыбратьЭлемент()?
|
|||
33
SherifSP
30.01.13
✎
14:44
|
(30) Все равно цвета не копирует
|
|||
34
Дык ё
30.01.13
✎
14:52
|
(33) да ладно :-/ (23) с учетом (28) копирует все на первом листе
|
|||
35
SherifSP
30.01.13
✎
14:55
|
(34)
Excel = Новый COMОбъект("Excel.Application"); Excel.Workbooks.Open("C:\ПутьКФайлу\Книга1.xls"); Excel.ActiveSheet.Cells.Copy(); ЭлементыФормы.ЭлементУправления1.ActiveSheet.Paste(); Так? |
|||
36
SherifSP
30.01.13
✎
14:58
|
(34) Размещение и ширина колонок нормальная, но цвета не отображаются(
|
|||
37
Дык ё
30.01.13
✎
15:01
|
(36) у 2003 офиса цветовая гамма меньше, чем у 2010. может, на преобразовании что-то теряет. можешь свой xls на посмотреть выложить?
|
|||
38
Дык ё
30.01.13
✎
15:04
|
+(37) сразу не проверил, поверил тебе на слово, но он у меня и из xml все оформление восстанавливает
|
|||
39
SherifSP
30.01.13
✎
15:06
|
||||
40
SherifSP
30.01.13
✎
15:06
|
(38) хм
|
|||
41
SherifSP
30.01.13
✎
15:10
|
(38) Офис 2003?
|
|||
42
SherifSP
30.01.13
✎
15:11
|
||||
43
Дык ё
30.01.13
✎
15:12
|
(39) открывает 1 в 1, только без группировки строк. может, у тебя owc устаревшей конструкции? у меня owc11.dll версии 12.0.6502.5000, а офис 2010 14.0.6112.5000
|
|||
44
SherifSP
30.01.13
✎
15:15
|
(43) У меня 2003 офис
|
|||
45
Дык ё
30.01.13
✎
15:19
|
(44) офис вряд ли влияет, попробуй руками скопировать - цвета копируются даже из мокселя
|
|||
46
SherifSP
30.01.13
✎
15:21
|
У меня owc11.dll версии - 12.0.4518.1014
|
|||
47
SherifSP
30.01.13
✎
15:22
|
(45) Нет не копируются
|
|||
48
Дык ё
30.01.13
✎
15:23
|
(46) обнови через виндовсапдейт. не поможет - я пас. с нашей стороны пули вылетели, ищите проблему на стороне мишени :-)
|
|||
49
SherifSP
30.01.13
✎
17:44
|
В офисе была проблема, переустановил работает на ура)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |