|
как сохранить табличный документ в excel без екселя и на сервере ? 8.1 | ☑ | ||
---|---|---|---|---|
0
zladenuw
18.05.13
✎
15:44
|
как быть ?
делал вот так Макет = ПолучитьМакет("Макет"); т = Макет.ПолучитьОбласть("т"); ТД = Новый ТабличныйДокумент; ТД.Вывести(т); ИмяВремФ = ПолучитьИмяВременногоФайла(".txt"); ТД.Записать(ИмяВремФ,ТипФайлаТабличногоДокумента.TXT); ВыбФайл = Новый Файл(ИмяВремФ); Если ВыбФайл.Существует() Тогда ИмяфЕксель = "C:\-\Downloads\test.xls"; ПутьКФайлу = "C:\-\Downloads\test2.xls"; ПереместитьФайл(ИмяВремФ, ИмяфЕксель); Excel = Новый COMОбъект("Excel.Application"); Книга = Excel.WorkBooks.Open(ИмяфЕксель); Книга.SaveAs(ПутьКФайлу,-4143); Excel.Application.Quit(); Excel = Неопределено; Книга = Неопределено; КонецЕсли; Но вот проблема екселя нету и сохранить табличный документ в hmtl на сервере нельзя. Как победить ? Без добавление пустых конфигураций. только код. помогите |
|||
1
zladenuw
18.05.13
✎
15:53
|
на гугль вот так. но как мне без гемора импортировать туда табличный документ. любой
СтрокаПодключения = " |Provider=Microsoft.Jet.OLEDB.4.0; |Data Source="+ИмяФайлаЭксельНовый+"; |Extended Properties=""Excel 8.0;HDR=YES"";"; Connection = Новый COMОбъект("ADODB.Connection"); Connection.ConnectionString = СтрокаПодключения; Connection.Open(); Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = "CREATE TABLE [МояТаблица] (Символьный char(255), Дата date, Целый int, Дробный float)"; Command.Execute(); Command.CommandText = "INSERT INTO [МояТаблица] (Символьный, Дата, Целый, Дробный) values ('АБВГДЕЁ', '12/4/1955', '1234567', '12345,6789')"; Command.Execute(); |
|||
2
zladenuw
18.05.13
✎
15:55
|
может есть у кого то пример перебора табличного документа ?
|
|||
3
zladenuw
18.05.13
✎
16:00
|
по перебору понятно.
Для а = 1 по ТД.ВысотаТаблицы Цикл Для б=1 по ТД.ШиринаТаблицы Цикл Ячейка = ТД.Область(а,б,а,б).Текст; Сообщить(Ячейка); КонецЦикла; А вот как получить линии таблицы с макета и передать их ? |
|||
4
Ctrekoza
18.05.13
✎
16:12
|
(0) Я конечно не спец, но, а в xml тоже не сохраняется? :)
У 1с есть такая небольшая и бесплатная программка просмотра файлов 1с на компах где не установлена 1с. Можно сохранить в xml, а потом открыть в этой программе и на другом компе где есть excel и попробовать там перевести файл в excel. |
|||
5
zladenuw
18.05.13
✎
16:13
|
(4) нужно все программно. да ексель поставили ошибка при SaveAs. пишет что нету такого метода. то пока не поставили. ищю другие пути.
|
|||
6
zladenuw
18.05.13
✎
16:30
|
получается что нельзя обвести линиями таблицу, без екселя ?
|
|||
7
zladenuw
18.05.13
✎
16:38
|
(4) проблема в том что
у табличного документа метод записать можно только два формата. При работе на сервере или через com-соединение использует только файлы форматов mxl и txt. выбор не велик :) вообщем лажа. а если пробовать открывать с mxl то там бред. и хз как выйти с положения :( |
|||
8
Живой Ископаемый
18.05.13
✎
16:59
|
(7) это у в8.1 такое ограничение, точно? И что же вас тогда до стх пор останавливает от перехада на 8.2?
|
|||
9
zladenuw
18.05.13
✎
17:04
|
(8) да точно.старый начальник не хотел. 8.2 прожорливей и тормознутей немного чем 8.1, его слова.
Ждем нового начальника ит отдела,а там будет видно. просто не известно какие чудеса будут после перехода на 8.2 |
|||
10
craxx
18.05.13
✎
17:52
|
(0) Йоксель рулит!
http://yoksel.net.ru/ |
|||
11
zladenuw
18.05.13
✎
17:58
|
(10) почитаю спасибо
|
|||
12
zladenuw
18.05.13
✎
18:04
|
(10) пойдет тема, но не то. и не открывает она таблицу mxl
|
|||
13
craxx
18.05.13
✎
18:17
|
(12) все открывает, внимательно читай
|
|||
14
zladenuw
18.05.13
✎
18:21
|
(13) так я запустил. сохранил mxl открываю его и вот ошибка.
http://www.ximage.ru/index.php?id=1368886874 |
|||
15
Живой Ископаемый
18.05.13
✎
19:38
|
(9) абсолютный бред, начиная например с того что тонкий клиент просто даже памяти потребляет меньше раза в три.
Чудес не будет если не исользовали какихто чудесных способов реализации |
|||
16
ic-kat
18.05.13
✎
21:51
|
(14)у меня такая ошибка вылезала, когда я пыталась открыть mxl, который сохранили в 1с 8. а ёксель работает кажется с mxl версии 1с7
|
|||
17
ic-kat
18.05.13
✎
22:05
|
да, глянула, так и есть. сначала перегоняли с mxl8 в mxl7, затем ёкселем в xls, а потом в самописную компоненту на основе опенофиса, которая уже конвертила и в нтмл и в офисные форматы и во все подряд.
|
|||
18
zladenuw
19.05.13
✎
00:28
|
пока так.
Excel = Новый COMОбъект("Excel.Application"); Книга = Excel.WorkBooks.Add(); Лист = Книга.WorkSheets(1); //МассивКОМ = Новый COMSafeArray("VT_VARIANT", ТД.ШиринаТаблицы, ТД.ВысотаТаблицы); Для индСтрок = 1 По ТД.ВысотаТаблицы Цикл Для индКолонок = 1 По ТД.ШиринаТаблицы Цикл ////МассивКОМ.SetValue(индКолонок, индСтрок, ТД.Область(индСтрок,индКолонок,индСтрок,индКолонок).Текст); Лист.Cells(индСтрок, индКолонок).Value = ТД.Область(индСтрок,индКолонок,индСтрок,индКолонок).Текст; Лист.Cells(индСтрок,индКолонок).Borders.Linestyle = 1; КонецЦикла; КонецЦикла; //Excel.Range(Excel.Cells(1,1), Excel.Cells(ТД.ВысотаТаблицы,ТД.ШиринаТаблицы)).Value = МассивКОМ; Excel.Visible=1; //Книга.SaveAs(ПутьКФайлу,1); Excel.Application.Quit(); Excel = Неопределено; Книга = Неопределено; |
|||
19
zladenuw
19.05.13
✎
00:35
|
(18)
там без проверки или есть линия Для индСтрок = 1 По ТД.ВысотаТаблицы Цикл Для индКолонок = 1 По ТД.ШиринаТаблицы Цикл ////МассивКОМ.SetValue(индКолонок, индСтрок, ТД.Область(индСтрок,индКолонок,индСтрок,индКолонок).Текст); Лист.Cells(индСтрок, индКолонок).Value = ТД.Область(индСтрок,индКолонок,индСтрок,индКолонок).Текст; Если ТД.Область(индСтрок,индКолонок,индСтрок,индКолонок).ГраницаСверху.ТипЛинии <> ТипЛинииЯчейкиТабличногоДокумента.НетЛинии или ТД.Область(индСтрок,индКолонок,индСтрок,индКолонок).ГраницаСправа.ТипЛинии <> ТипЛинииЯчейкиТабличногоДокумента.НетЛинии или ТД.Область(индСтрок,индКолонок,индСтрок,индКолонок).ГраницаСлева.ТипЛинии <> ТипЛинииЯчейкиТабличногоДокумента.НетЛинии или ТД.Область(индСтрок,индКолонок,индСтрок,индКолонок).ГраницаСнизу.ТипЛинии <> ТипЛинииЯчейкиТабличногоДокумента.НетЛинии Тогда Лист.Cells(индСтрок,индКолонок).Borders.Linestyle = 1; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
20
zladenuw
19.05.13
✎
00:46
|
а вот как быть с рисунком. его только через файл или можно как то сразу через 1с ?
наверное только через временные. |
|||
21
mehfk
19.05.13
✎
00:49
|
(0) Если допустимо xlsx вместо xls то на сервере (даже если он под linux) можешь программно формировать xml. Кое-какая инфа есть на инфостарте. Если не стремишься к суперуниверсальным решениям, то можешь один раз сохранить в xlsx и на основании файла sheet1.xml посмотреть как его нужно делать. Я, например, автофильтр включал и менял стиль ссылок-ячеек с R1C1 на A1
|
|||
22
zladenuw
19.05.13
✎
00:51
|
(21) не. там не линукс. там мс скл крутиться
|
|||
23
zladenuw
19.05.13
✎
01:00
|
(21) ну а как мне сохранить в xml. если нельзя табличный документ выгрузить в него
|
|||
24
zladenuw
19.05.13
✎
01:12
|
сдела так. но не вижу я там рисунков.
Объект = СериализаторXDTO.ЗаписатьXDTO(ТД); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("C:\test1456.xml"); ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Объект); ЗаписьXML.Закрыть(); |
|||
25
zladenuw
19.05.13
✎
01:18
|
(24) мда, поспешил. как то бредово открывается в екселе. про опен вообще молчу.
|
|||
26
zladenuw
19.05.13
✎
01:34
|
(15) согласен. но этот весь функционал нужно переписать. а сейчас хватает текучки. вот такие дела. ну и не я решаю. я то за
|
|||
27
hhhh
19.05.13
✎
03:23
|
что-то я пропустил, а почему просто нельзя записать табличный документ в ексель?
ТД.Записать(ИмяФайла, ексель) |
|||
28
zladenuw
19.05.13
✎
03:33
|
(27) так это 8.1. на сервере только мхл и тхт
|
|||
29
mehfk
19.05.13
✎
19:05
|
||||
30
zladenuw
20.05.13
✎
10:30
|
(29) хм. а что в макете ?
|
|||
31
mehfk
20.05.13
✎
11:05
|
(30) xlsx
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |