|
v7: Подскажите как выгрузить в Excel | ☑ | ||
---|---|---|---|---|
0
oslokot
29.11.12
✎
15:49
|
Есть некая печатная форма заявки, если ее сохранить как .xls, на выходе получается естественно коряво: выход за поля, разъезжаются ячейки и т.п.
Вот форма http://www.ekomash.ru/paulencio/primer.jpg Слышал, что можно работать с екселем через оле,адо. Подскажите примерчик если кто реализовывал? |
|||
1
Heckfy
29.11.12
✎
15:50
|
||||
2
oslokot
29.11.12
✎
16:01
|
Работать через Excel.Application?
|
|||
3
andrewalexk
29.11.12
✎
16:05
|
:) поищи в инете....куча была обработок
|
|||
4
oslokot
29.11.12
✎
16:07
|
да ищу, попадается одна вода
|
|||
5
oslokot
29.11.12
✎
16:08
|
Может мне шаблон создать, с ровными полями и т.д. А из 1С через Excel.Application данные заливать?
|
|||
6
Vovik
29.11.12
✎
16:09
|
(0)Я делаю так. Ложу шаблон xls в папку прн формс. Потом открываю и заполняю. ТЧ - копирование первой строки.
Для тиса у меня есть готовая отправка Счетов фактур и ГТД в ексель. |
|||
7
Vovik
29.11.12
✎
16:10
|
||||
8
monsterZE
29.11.12
✎
16:16
|
(0) можно часть в "надпись" загнать
она правильно переносится |
|||
9
DES
29.11.12
✎
16:16
|
(7) там логиниться требуется
|
|||
10
Vovik
29.11.12
✎
16:20
|
Щас дам нужные куски кода
|
|||
11
Vovik
29.11.12
✎
16:21
|
//приложение
П=СоздатьОбъект("Excel.Application"); Файл="sf2012.xls"; КаталогПечФорм=КаталогИБ()+"ExtForms\PrnForms\"; ИмяФайлаПечатнойФормы = КаталогПечФорм+Файл; Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 0 Тогда Сообщить("Не найден шаблон: "+ИмяФайлаПечатнойФормы); Возврат; КонецЕсли; |
|||
12
oslokot
29.11.12
✎
16:23
|
(10) ага, спасибо, как открыть (11) понятно, как данные туда писать
|
|||
13
Vovik
29.11.12
✎
16:24
|
П=СоздатьОбъект("Excel.Application");
Если ФайлОткрытЕксель(П,Шабл)=1 Тогда Возврат; КонецЕсли; Книга = П.WorkBooks.Open(ТекущийКаталог+Шабл,,1); П.Visible=1; П.displayalerts = 0; Лист = Книга.Worksheets(1); //Текст_Заменить_эксель(Лист,"#_гражданин1",СокрЛП(ВыбСотр)); Текст_Заменить_эксель(Лист,"#_гражданин",СокрЛП(ВыбСотр)); ДатаРожд = СокрЛП(Формат(ВыбСотр.ДатаРождения,"ДДДММГГГГ")); ДатаРожд = СтрЗаменить(ДатаРожд,".",""); Для п2=1 по 8 Цикл Текст_Заменить_эксель(Лист,"#_д"+п2,Сред(ДатаРожд,п2,1)); КонецЦикла; Представление = ""; СЗ = глРазложить(ВыбСотр.МестоРождения); Для Номер = 2 по СЗ.РазмерСписка() Цикл Если ПустоеЗначение(СЗ.ПолучитьЗначение(Номер))=0 Тогда Представление = Представление+?(ПустоеЗначение(Представление)=1,"",", ")+СокрЛП(СЗ.ПолучитьЗначение(Номер)) КонецЕсли; КонецЦикла; Текст_Заменить_эксель(Лист,"#_МестоРождения",СокрЛП(Представление)); Серия = ""; Номер = ""; ДатаВыдачи = ""; КемВыдан = ""; Попытка Документ = глРазложитьДокУдостоверяющийЛичность(ВыбСотр.ДокументУдЛичность); СпрДокумент = СоздатьОбъект("Справочник.ДокументыУдостоверяющиеЛичность"); Если СпрДокумент.НайтиПоНаименованию(Документ.ПолучитьЗначение(1))=1 Тогда Вид = СпрДокумент.ТекущийЭлемент() КонецЕсли; Серия = Документ.ПолучитьЗначение(2); Номер = Документ.ПолучитьЗначение(3); ДатаВыдачи = Документ.ПолучитьЗначение(4); КемВыдан = Документ.ПолучитьЗначение(5); Исключение КонецПопытки; Текст_Заменить_эксель(Лист,"#_серия",СокрЛП(Серия)); Текст_Заменить_эксель(Лист,"#_номер",СокрЛП(Номер)); Текст_Заменить_эксель(Лист,"#_выдан",СокрЛП(КемВыдан)); ДатаВыдачи = СтрЗаменить(ДатаВыдачи,".",""); Для п2=1 по 8 Цикл Текст_Заменить_эксель(Лист,"#_дв"+п2,Сред(ДатаВыдачи,п2,1)); КонецЦикла; ИНН=СокрЛП(ВыбСотр.ИНН); п3=12;//п3=СтрДлина(ИНН); Пока п3>0 Цикл Текст_Заменить_эксель(Лист,"#_инн"+п3,Сред(ИНН,п3,1)); п3=п3-1; КонецЦикла; Телефон=НомТел(СокрЛП(ВыбСотр.Телефон)); п4=11;//п4=СтрДлина(Телефон); Пока п4>0 Цикл Текст_Заменить_эксель(Лист,"#_моб"+п4,Сред(Телефон,п4,1)); п4=п4-1; КонецЦикла; АдресПрописка = СокрЛП(глПредставлениеАдреса(ВыбСотр.АдресПрописка)); Текст_Заменить_эксель(Лист,"#_АдресПрописка",АдресПрописка); Текст_Заменить_эксель(Лист,"#_должность",СокрЛП(ВыбСотр.Должность.Получить(ДатаД))); _Ф="";_И="";_О=""; глФамилияИмяОтчество(ВыбСотр,_Ф,_И,_О); Подпись = _Ф+" "+Лев(_И,1)+". "+Лев(_О,1)+"."; Текст_Заменить_эксель(Лист,"#_подпись",Подпись); Лист2 = Книга.Worksheets(2); Текст_Заменить_эксель(Лист2,"#_подпись",Подпись); Лист3 = Книга.Worksheets(3); Текст_Заменить_эксель(Лист3,"#_подпись",Подпись); //Транслит ИмяЛат = Рус_Лат(_И); ИмяЛат = Нрег(ИмяЛат); ИмяЛат = Врег(Лев(ИмяЛат,1))+Сред(ИмяЛат,2); ФамЛат = Рус_Лат(_Ф); ФамЛат = Нрег(ФамЛат); ФамЛат = Врег(Лев(ФамЛат,1))+Сред(ФамЛат,2); Текст_Заменить_эксель(Лист,"#_транслит",СокрЛП(ИмяЛат)+" "+СокрЛП(ФамЛат)); |
|||
14
Vovik
29.11.12
✎
16:24
|
СФ.Cells(5,2).Value=РеквШапки.Получить("Номер");
СФ.Cells(6,2).Value=НомерИсправления; СФ.Cells(7,2).Value=РеквШапки.Получить("Поставщик"); СФ.Cells(8,2).Value=РеквШапки.Получить("АдресПоставщика"); СФ.Cells(9,2).Value=РеквШапки.Получить("ИНН_КПППоставщика"); СФ.Cells(10,2).Value=РеквШапки.Получить("Грузоотправитель"); СФ.Cells(11,2).Value=РеквШапки.Получить("Грузополучатель"); СФ.Cells(12,2).Value=РеквШапки.Получить("ПоДокументу"); СФ.Cells(13,2).Value=РеквШапки.Получить("Покупатель"); СФ.Cells(14,2).Value=РеквШапки.Получить("АдресПокупателя"); СФ.Cells(15,2).Value=РеквШапки.Получить("ИННКПП_Покупателя"); СФ.Cells(16,2).Value=Шаблон("Валюта: [ПечВалюта]"); |
|||
15
Vovik
29.11.12
✎
16:25
|
МнЧ.ВыбратьСтроки();
Пока МнЧ.ПолучитьСтроку() = 1 Цикл НомСтр=НомСтр+1; _стр=21+НомСтр-1; Если НомСтр>1 Тогда СФ.Rows("21:21").Copy(); СФ.Rows(""+_стр+":"+_стр+"").Insert(); КонецЕсли; //СФ.Cells(_стр,2).Value = НомСтр; СФ.Cells(_стр,2).Value = СокрЛП(МнЧ.Номенклатура); СФ.Cells(_стр,3).Value = СокрЛП(МнЧ.ЕдиницаКод); СФ.Cells(_стр,4).Value = СокрЛП(МнЧ.Единица); СФ.Cells(_стр,5).Value = Формат(МнЧ.Количество, ФорматКоличества); СФ.Cells(_стр,6).Value = ?(МнЧ.Цена=0,"-", Формат(МнЧ.Цена,"Ч15.2")); СФ.Cells(_стр,7).Value = ?(МнЧ.Сумма=0,"-", Формат(МнЧ.Сумма,"Ч15.2")); СФ.Cells(_стр,8).Value = СокрЛП(МнЧ.АкцизЦена); СФ.Cells(_стр,9).Value = ?(ПустоеЗначение(МнЧ.СуммаНДС) = 1, "Без НДС", СокрЛП(МнЧ.СтавкаНДС)); СФ.Cells(_стр,10).Value = ?(ПустоеЗначение(МнЧ.СуммаНДС) = 1, " -- ", СокрЛП(МнЧ.СуммаНДС)); СФ.Cells(_стр,11).Value = ?(МнЧ.ВсегоСНДС=0,"-", Формат(МнЧ.ВсегоСНДС,"Ч15.2")); СФ.Cells(_стр,12).Value = СокрЛП(МнЧ.СтранаК); СФ.Cells(_стр,13).Value = СокрЛП(МнЧ.СтранаН); СФ.Cells(_стр,14).Value = СокрЛП(МнЧ.НомерГТД); КонецЦикла; |
|||
16
Надсмотрщик
29.11.12
✎
16:25
|
Функция СформироватьВExcel(ХЛС, НовыйСчет, Лист, НомДок, СтрПоставщик, СтрПокупатель)
ХЛС=СоздатьОбъект("Excel.Application"); Попытка НовыйСчет = ХЛС.Workbooks.Add(КаталогИБ() + "\Счет.xlt"); Лист = НовыйСчет.Sheets(1); Исключение Возврат 0; КонецПопытки; Лист.Cells(5, 2).Value = СокрЛП(Константа.Банк); Лист.Cells(5, 8).Value = СокрЛП(Константа.БанкКорсчет); Лист.Cells(6, 2).Value = "ИНН " + СокрЛП(Константа.ИНН); Лист.Cells(6, 5).Value = "КПП " + СокрЛП(Константа.КПП); Лист.Cells(8, 2).Value = СокрЛП(Константа.Организация); Лист.Cells(8, 8).Value = СокрЛП(Константа.РасчетныйСчет); Лист.Cells(10, 2).Value = "СЧЕТ № " + НомДок + " от " + Формат(ДатаДок ,"Д (0)ДДММММГГГГ"); Лист.Cells(13, 4).Value = СтрПоставщик; Лист.Cells(14, 4).Value = СтрПокупатель; Лист.Cells(18, 9).Value = Формат(Итог("Сумма"), "Ч15.2-"); Лист.Cells(19, 8).Value = ?(Итог("НДС")=0,"Без налога (НДС).","Итого НДС:"); Лист.Cells(19, 9).Value = Формат(Итог("НДС"), "Ч15.2-"); Лист.Cells(20, 9).Value = Формат(Итог("Всего") - Итог("НП"), "Ч15.2-"); Лист.Cells(21, 9).Value = Формат(Итог("НП"), "Ч15.2-"); Лист.Cells(22, 9).Value = Формат(Итог("Всего"), "Ч15.2-"); Лист.Cells(24, 2).Value = "Всего наименований " + КоличествоСтрок() + ", на сумму " + ФРМ(Итог("Всего")); Лист.Cells(25, 2).Value = СуммаПрописью(Итог("Всего")); Лист.Cells(27, 2).Value = "Руководитель предприятия_____________________ (" + СокрЛП(Константа.Руководитель) + ")"; Лист.Cells(29, 2).Value = "Главный бухгалтер____________________________ (" + СокрЛП(Константа.ГлБухгалтер) + ")"; Если Итог("НП") = 0 Тогда Лист.Rows("20:21").Delete(-4162); КонецЕсли; СчЦ = 0; Если КоличествоСтрок() > 1 Тогда Для СчЦ = 2 По КоличествоСтрок() Цикл Лист.Rows("17:17").Copy(); Лист.Rows("17:17").Insert(-4121); КонецЦикла; ХЛС.CutCopyMode = 0; КонецЕсли; Возврат 1; КонецФункции // СформироватьВExcel() |
|||
17
oslokot
29.11.12
✎
16:36
|
Спасибо за наводку! получается, данные вроде потекли.
Принцип понял, остальное найду |
|||
18
Ёпрст
29.11.12
✎
16:37
|
ужас какой..
Йоксель и пару строк кода.. и гораздо быстрее, чем Excel.Application и сам офис не нужен при этом |
|||
19
Надсмотрщик
29.11.12
✎
16:38
|
Лови еще дальше
Функция ПослатьПисьмо(ИмяФайлаXLS) Если ПустоеЗначение(Контрагент.ЭлектронныйАдрес) = 1 Тогда Предупреждение("У заказчика " + Контрагент +" не заполнен электронный адрес!"); Возврат 0; Иначе Адрес = СокрЛП(Контрагент.ЭлектронныйАдрес); КонецЕсли; Попытка Почта = СоздатьОбъект("AddIn.V7Mail"); Исключение Предупреждение("Не удалось создать объект Addin.V7Mail!"); Возврат 0; КонецПопытки; Попытка Почта.Подключиться(); Почта.НовоеСообщение(); Почта.ДобавитьАдрес(Адрес); Почта.Заголовок = "Счет на Услуги от " + Константа.КратНаимОрганизации; Почта.Текст = "Счет на Услуги от " + Константа.КратНаимОрганизации; Почта.ДобавитьФайл(ИмяФайлаXLS); Почта.Послать(); Почта.Отключиться(); Сообщить("Ответ успешно отправлен!"); ФС.УдалитьФайл(ИмяФайлаXLS); Исключение Сообщить("Неудачная попытка! Отправка счета по почте не произведена!"); Возврат 0; КонецПопытки; Возврат 1; КонецФункции // ПослатьПисьмо() //****************************************************************************** Процедура Печать() Если Контрагент.Выбран() = 0 Тогда Сообщить("На выбран контрагент."); Активизировать("Контрагент",); Возврат; КонецЕсли; Если ВариантОтправкиСчета.Выбран() = 0 Тогда Сообщить("На выбран Вариант отправки счета."); Активизировать("ВариантОтправкиСчета",); Возврат; КонецЕсли; НомДок = СокрЛП(НомерДок); АдресТелефон = "Адрес: " + СокрЛП(Константа.АдресОрганизации); АдресТелефон = АдресТелефон + ", тел.: " + СокрЛП(Константа.ТелефоныОрганизации); ПоставщикРасчСчет = ""; ПоставщикИНН = ""; ПоставщикКПП = ""; ПоставщикБанк = ""; Кредит = ""; ПоставщикБанкБИК = ""; ПоставщикБанкКорсчет = ""; СтрПоставщик = "ИНН " + СокрЛП(Константа.ИНН) + ", КПП " + СокрЛП(Константа.КПП); СтрПоставщик = СтрПоставщик + ", " + СокрЛП(Константа.ПолнНаимОрганизации) + "(" + СокрЛП(Константа.КратНаимОрганизации) + "), "; СтрПоставщик = СтрПоставщик + СокрЛП(Константа.АдресОрганизации) + ", тел. " + СокрЛП(Константа.ТелефоныОрганизации); СтрПокупатель = "ИНН " + СокрЛП(Контрагент.ИНН) + ", КПП " + СокрЛП(Контрагент.КПП); СтрПокупатель = СтрПокупатель + ", " + СокрЛП(Контрагент.ПолнНаименование) + "(" + СокрЛП(Контрагент.Наименование) + "), "; СтрПокупатель = СтрПокупатель + СокрЛП(Контрагент.ЮридическийАдрес) + ", тел. " + СокрЛП(Контрагент.Телефоны); Таб = СоздатьОбъект("Таблица"); ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\1cbs.mxl"; Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1 Тогда Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы); Иначе Таб.ИсходнаяТаблица("Таблица"); КонецЕсли; Таб.ВывестиСекцию("Шапка"); Вар = 0; ХЛС=""; НовыйСчет = ""; Лист = ""; ИмяФайлаXLS = СокрЛП(Константа.КаталогВременныхФайлов) + "\Счет_" + НомерДок + ".xls"; Если ВариантОтправкиСчета = Перечисление.ВариантыОтправкиСчета.ЭлектронноXLS Тогда Вар = СформироватьВExcel(ХЛС, НовыйСчет, Лист, НомДок, СтрПоставщик, СтрПокупатель); КонецЕсли; ВыбратьСтроки(); Ном = 0; Пока ПолучитьСтроку()=1 Цикл Ном = Ном + 1; Наименование = ?(ПустаяСтрока(Товар.ПолнНаименование)=1, Товар.Наименование, Товар.ПолнНаименование); Таб.ВывестиСекцию("Строка"); Если Вар = 1 Тогда Лист.Cells(16 + Ном, 2).Value = Ном; Лист.Cells(16 + Ном, 3).Value = СокрЛП(Наименование); Лист.Cells(16 + Ном, 6).Value = СокрЛП(Товар.ЕдиницаИзмерения); Лист.Cells(16 + Ном, 7).Value = Количество; Лист.Cells(16 + Ном, 8).Value = Формат(Цена, "Ч15.2-");; Лист.Cells(16 + Ном, 9).Value = Формат(Сумма, "Ч15.2-");; КонецЕсли; КонецЦикла; Таб.ВывестиСекцию("Итого"); Таб.ВывестиСекцию("НДС"); Если Константа.НП = Перечисление.Булево.Да Тогда Таб.ВывестиСекцию("НП"); КонецЕсли; Таб.ВывестиСекцию("Подвал"); Таб.Опции(0,0,0,0,"ОпцииПечатиСчета","ОкноСчета"); Таб.ПараметрыСтраницы(1,,,,,,,,,1,1,); Таб.ТолькоПросмотр(1); Таб.Показать("Печать счета",); // Если Вар = 1 Тогда Лист.Range("A1").Select(); //Лист.PrintOut(); НовыйСчет.SaveAs(ИмяФайлаXLS,-4143); Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") = 1 Тогда ИначеЕсли ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "ExtForms\" + "v7plus.dll") = 1 Тогда ИначеЕсли ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда Предупреждение("Компонента v7plus.dll не найдена!"); Вар = 0; КонецЕсли; НовыйСчет.Close(); Если Вар = 1 Тогда Вар = ПослатьПисьмо(ИмяФайлаXLS); КонецЕсли; ХЛС.Visible=1; НовыйСчет = ""; КонецЕсли; КонецПроцедуры |
|||
20
1С 8 3
29.11.12
✎
16:41
|
http://www.gotdotnet.ru/LearnDotNet/NETFramework/22054.aspx
По этой ссылке хорошо описанна объектная модель со свойствами и параметрами |
|||
21
Ёпрст
29.11.12
✎
16:42
|
||||
22
Ёпрст
29.11.12
✎
16:42
|
повесить открытие поделки в панель струментов и наслаждаться
|
|||
23
Vovik
29.11.12
✎
16:42
|
(18)Ексель юзают все. А Йоксель редко кто знает.
|
|||
24
НЕА123
29.11.12
✎
16:44
|
(0)
макет сделать нормальный, туда выводить и сохранять в xls ? |
|||
25
Надсмотрщик
29.11.12
✎
16:45
|
В (19) Вместе с отправкой по почте.
Писалось для КоллЦентра |
|||
26
Масянька
29.11.12
✎
16:51
|
Автор! Слушай Ёпрст4! Умный пацан!
PS Йоксель - вещь! |
|||
27
Vovik
29.11.12
✎
16:55
|
(25)У меня тож самое. Лень людям каждую накладную и сф печатать. Сохранят в ексель. Отправлять по почте. Берут скопом накладные за период и все автоматом на мыло.
|
|||
28
Vovik
29.11.12
✎
16:57
|
(26)Слюшай умный вещь, выложи сюда что кроме слова йоксель, пожалуйста. Код например. Я уже забыл что такое йоксель, наверное он не очень то мне и нужен оказался в итоге. Даж не помню толком что это.
|
|||
29
oslokot
29.11.12
✎
17:02
|
(21) о, нормально. Только с полями косяк, вылезают за пределы печати, приходится настраивать. А Ёксель сможет сам поля подогнать?
(26) знаю |
|||
30
oslokot
29.11.12
✎
17:03
|
(24) да-да, с помощью Vovik получается лить в шаблон.
Ексель тоже заинтересовал. Сделаю и так и эдак.. |
|||
31
oslokot
29.11.12
✎
17:04
|
(30) *Ёксель
|
|||
32
kalleka
29.11.12
✎
17:06
|
(22) Не в тему, но подскажи пожалуйста. Ты мне скидывал ссылку на обработку по поиску ошибок в базе
В базе одной нашел документ у которого привязка к операции за другую дату, а у него вообще не должно быть операций. и есть движение по одному регистру, а движений так же не должно быть даже теоретически. Кроме того движение есть, а галки что движение есть - нету... Как вообще с этим бороться? Тупо документ перепровести? (не хочется, он за февраль) |
|||
33
Mikeware
29.11.12
✎
17:07
|
(32) вручную поправь, и переиндексируйся...
|
|||
34
Касандер72
29.11.12
✎
17:14
|
(0) Ексель стремный - были баги когда разные версии на концах юзаются - когда открывается не сам док, а мод-копия - запаришься закрывать - програмно не срабатывало ... хотя - на любителя - если все синхро - работает бусечки ... разве что с форматами иногда баги прилетают ...
|
|||
35
kalleka
29.11.12
✎
17:20
|
(32) А из какой таблицы удалять конкретно?
|
|||
36
Масянька
29.11.12
✎
17:20
|
(28)
Процедура ПодготовитьФайл(ПолноеИмяФайла, ТаблицаЗагрузки) Попытка ЗагрузитьВнешнююКомпоненту("SpreadSheet.dll"); Исключение Предупреждение("Не удалось загрузить компоненту SpreadSheet.dll."); Возврат; КонецПопытки; Йоксель = СоздатьОбъект("ТабличныйДокумент"); Конвертер = СоздатьОбъект("КонвертерExcel"); ВремТабл = Конвертер.Создать(); Йоксель.ЗагрузитьИзТаблицы(ТаблицаЗагрузки); ВремТабл.Листы.Добавить("Лист", Йоксель); Параметры = Йоксель.ПараметрыПечати; Параметры.ПолеСверху = 50; Параметры.ПолеСнизу = 50; Параметры.ПолеСлева = 50; Параметры.ПолеСправа = 50; Параметры.Ориентация = 1; ВремТабл.ПараметрыКонвертера.РаспознаватьЧисловыеЗначения = 1; // сохраняем файл в выбранном каталоге ВремТабл.Записать(ПолноеИмяФайла); Йоксель.Очистить(); |
|||
37
Масянька
29.11.12
✎
17:25
|
(34) Мне понравилось. Когда из таб. формы сохраняешь (Сохранить как - Excel) - то строчки сжимаются, то с цифрами фигня. А с Йокселем, у меня по крайней мере, проблем нет.
|
|||
38
oslokot
29.11.12
✎
17:38
|
(36) не работают ПараметрыПечати. Вы не ошиблись в коде?
|
|||
39
Масянька
29.11.12
✎
17:41
|
(38) Что значит "Не работает"?
|
|||
40
oslokot
29.11.12
✎
17:43
|
(39) чтобы я не менял в параметрах (поля, ориентацию) после записи открываю файл екселем, поля не меняются, ориентация тоже
|
|||
41
oslokot
29.11.12
✎
17:45
|
я про это:
Параметры = Йоксель.ПараметрыПечати; Параметры.ПолеСверху = 50; Параметры.ПолеСнизу = 50; Параметры.ПолеСлева = 50; Параметры.ПолеСправа = 50; Параметры.Ориентация = 1; Ексель открывает файл без учета этих параметров |
|||
42
oslokot
29.11.12
✎
17:45
|
или Екселю пофиг?
|
|||
43
Масянька
29.11.12
✎
17:46
|
(40) У меня нормально все отслеживает и сохраняет - и формат, и поля. Excel какой?
|
|||
44
oslokot
29.11.12
✎
17:52
|
(43) 2003
|
|||
45
Масянька
29.11.12
✎
17:53
|
(44) И у меня такой же. А SpreadSheet какой?
|
|||
46
oslokot
29.11.12
✎
17:55
|
(45) незнаю 3 метра весит, дата файла 24.10.08
|
|||
47
Масянька
29.11.12
✎
17:57
|
Пошукай в инете: версия 1.1.27.0, дата 17 августа 2012 г.
Там были косяки. |
|||
48
Масянька
29.11.12
✎
17:59
|
Хочешь - давай мыло, завтра тебе скину.
|
|||
49
oslokot
29.11.12
✎
18:28
|
(48) ага, спасибо oslokot mail.ru
|
|||
50
Mikeware
29.11.12
✎
18:31
|
||||
51
Serginio1
29.11.12
✎
18:42
|
Процедура СоздатьПараметрыИТекст(СтрКолонки,Стр,Cmd)
Имя=СтрКолонки.Имя; ТипЗначения=СтрКолонки.ТипЗначения; Если ТипЗначения.СодержитТип(Тип("Строка")) Тогда Стр=Стр+Имя+" NTEXT,"; Cmd.Parameters.Append(Cmd.CreateParameter(Имя,203,1,255,"1")); ИначеЕсли ТипЗначения.СодержитТип(Тип("Число")) Тогда КвалификаторыЧисла=Типзначения.КвалификаторыЧисла; Разрядность=КвалификаторыЧисла.Разрядность; РазрядностьДробнойЧасти=КвалификаторыЧисла.РазрядностьДробнойЧасти; Стр=Стр+Имя+" Numeric("+Разрядность+","+РазрядностьДробнойЧасти+"),"; Парам=Cmd.CreateParameter(Имя,6,1,Разрядность,); Парам.NumericScale = РазрядностьДробнойЧасти; Парам.Precision = Разрядность-РазрядностьДробнойЧасти-?(РазрядностьДробнойЧасти=0,0,1); Cmd.Parameters.Append(Парам); ИначеЕсли ТипЗначения.СодержитТип(Тип("Дата")) Тогда Стр=Стр+Имя+" DateTime,"; Cmd.Parameters.Append(Cmd.CreateParameter(Имя,135,1)); ИначеЕсли ТипЗначения.СодержитТип(Тип("Булево")) Тогда Стр=Стр+Имя+" BOOLEAN,"; Cmd.Parameters.Append(Cmd.CreateParameter(Имя,11,1)); КонецЕсли; КонецПроцедуры Процедура СоздатьТаблицуИКоманд(Тз,Соединение,Команд) Стр="Create TABLE Лист1 ("; Колонки=Тз.Колонки; Для каждого СтрКолонки из колонки Цикл СоздатьПараметрыИТекст(СтрКолонки,Стр,Команд) КонецЦикла; Стр=Лев(Стр,СтрДлина(Стр)-1)+")"; Сообщить(Стр); Соединение.Execute(Стр); КонецПроцедуры Процедура ЗаписатьТзВЭксель(тз) // Допустимые типы // adDouble = 5 Значение с плавающей точкой двойной точности // adDAte = 7 Дата // adCurrency = 6 Денежная сумма // adBoolean = 11 Булево // adVarWChar = 202 Символьная строка Unicode, заканчивающаяся NULL // adLongVarWChar = 203 Длинное строковое значение ИмяФайлаЭксель = "D:\Export.xlsx"; // Имя создаваемого файла Файл=Новый Файл(ИмяФайлаЭксель); Если файл.Существует() Тогда УдалитьФайлы(ИмяФайлаЭксель); КонецЕсли; СтрокаПодключения = "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"); // Создаем соединение 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 = Неопределено; КонецПроцедуры |
|||
52
oslokot
29.11.12
✎
18:51
|
(50) чета я запутался по ссылке Yoksel.dll
А SpreadSheet.dll тогда что? |
|||
53
FN
29.11.12
✎
18:52
|
еще один вариант (без Йокселя):
ТАб.Записать(ИмяФайла,1); Состояние("Установка параметров страницы..."); Попытка Excel = СоздатьОбъект("Excel.Application"); Excel.DisplayAlerts=0; Исключение Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.","!"); Возврат; КонецПопытки; Excel.Workbooks.Open(ИмяФайла); Состояние("Установка параметров страницы..."); Лист=Excel.ActiveWorkBook.ActiveSheet; Лист.Columns(7).Hidden = 1; Лист.Columns(8).Hidden = 1; Лист.Columns(9).Hidden = 1; Лист.Columns(10).Hidden = 1; Лист.Range(Лист.Cells(7,5),Лист.Cells(ном+7,5)).NumberFormat="0,000"; Лист.Range(Лист.Cells(7,6),Лист.Cells(ном+7,6)).NumberFormat="0,00"; Лист.Cells(ном+7,12).NumberFormat="0,00";Лист.Cells(ном+7,13).NumberFormat="0,00";Лист.Cells(ном+7,14).NumberFormat="0,00"; ПараметрыСтраницы=Лист.PageSetup; Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.Language="javascript"; Скрипт.AddObject("ПараметрыСтраницы",ПараметрыСтраницы); Скрипт.Eval("ПараметрыСтраницы.Zoom=false");ПараметрыСтраницы=""; Лист.PageSetup.PrintArea=Лист.UsedRange; Лист.PageSetup.Orientation =1; Лист.PageSetup.PrintTitleRows="$7:$7"; Лист.PageSetup.RightHeader = "Стр. &P из &N"; Лист.PageSetup.LeftMargin = Excel.CentimetersToPoints(1.7); Лист.PageSetup.TopMargin = Excel.CentimetersToPoints(1.7); Лист.PageSetup.RightMargin = Excel.CentimetersToPoints(1); Лист.PageSetup.BottomMargin = Excel.CentimetersToPoints(1); Лист.PageSetup.FitToPagesWide = 1; Лист.PageSetup.FitToPagesTall = 999; Excel.ActiveWorkBook.SaveAs(ИмяФайла,-4143); Excel.ActiveWorkBook.Close(); Если Excel.WorkBooks.Count=0 Тогда Excel.Quit(); КонецЕсли; ПараметрыСтраницы="";Лист="";Excel=""; |
|||
54
Mikeware
29.11.12
✎
18:56
|
(52) как маленький, право слово... Компонент для 1С:Предприятия 7.7:
http://yoksel.net.ru/files/release/yoksel_hotfix_2012_04_20.rar Рядом als и пример (демоконфа) |
|||
55
oslokot
29.11.12
✎
19:03
|
(54) аа, благодарю! что-то к вечеру каша в голове
Так, всё, наконец-то ёксель заработал как надо! Спасибо всем! |
|||
56
oslokot
30.11.12
✎
10:59
|
Всех с веселой пятницей!
(37) Все-таки Йоксель немножко режет верх и низ строки в ячейке. В свойствах ячейки mxl стоит "Переносить", а при выводе в Йоксель и последующем сохранении конвертером в xls получается вот: http://www.ekomash.ru/paulencio/yoksel.jpg Можно ли как-то отступы замутить? |
|||
57
ЧеловекДуши
30.11.12
✎
11:03
|
||||
58
Касандер72
30.11.12
✎
11:05
|
(56) ну и мути на здоровье - только с высотой строки)
|
|||
59
ЧеловекДуши
30.11.12
✎
11:05
|
(56)Чушь!, Пятничная ;)
Все там нормально. |
|||
60
Ёпрст
30.11.12
✎
11:14
|
(56) нет там такого
|
|||
61
oslokot
30.11.12
✎
11:17
|
(58) попробовать поиграться с высотой строки в таблице перед выводом?
(59) да чегож нормалоьного если урезает? (60) в Йокселе? |
|||
62
oslokot
30.11.12
✎
11:45
|
(58) ок, замутил с высотой строки )
вопрос вроде снят |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |