|
1C 8 3 УПП Как прочитать формат ячейки при загрузке файла эксель? | ☑ | ||
---|---|---|---|---|
0
Nysha1210
03.04.19
✎
22:53
|
Добрый день. Читаю файл *.xls при помощи процедуры:
//OpenOffice Calc////////////////////////////////////////////////////////////////////////////////////////////// Попытка ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Исключение Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice\LibreOffice не установлена на данном компьютере!"); Возврат Неопределено; КонецПопытки; Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства.Name = "AsTemplate"; Свойства.Value = Истина; Args = Новый COMSafeArray("VT_VARIANT", 2); Args.SetValue(0, Свойства); Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства1.Name = "Hidden"; Свойства1.Value = Истина; Args.SetValue(1,Свойства1); Document = Desktop.LoadComponentFromURL(ПривестиФайлКУРЛ(ПутьКФайлу), "_blank", 0, Args); Sheets = Document.getSheets(); Sheet = Sheets.getByIndex(текЛист-1); локТабЗнач = Новый ТаблицаЗначений; begCol = 0; begRow = 0; endCol = Sheet.Data.GetLength(6) - 1; endRow = Sheet.Data.GetLength() - 1; нКол = 0; локТабЗнач.Колонки.Очистить(); КС = Новый КвалификаторыСтроки(50); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , КС); Пока нКол <= endCol Цикл ИмяКол = "К"+Строка(нкол+1); локТабЗнач.Колонки.Добавить(ИмяКол,ОписаниеТиповСтрока); нКол = нКол + 1; КонецЦикла; Range = Sheet.getCellRangeByPosition(begCol, begRow, endCol, endRow); МассивКом = Новый COMSafeArray("VT_VARIANT", Range.Columns.Count, Range.Rows.Count); МассивКом = Range.getDataArray(); тмпПростойМассив = МассивКом.Выгрузить(); Для каждого массив из тмпПростойМассив Цикл ит = 0; НовСтрока = локТабЗНач.Добавить(); Для каждого ЭлементМассива из массив цикл НовСтрока[ит] = ЭлементМассива; ит = ит + 1; КонецЦикла; КонецЦикла; Возврат локТабЗнач; Всё считывает. Но есть некоторые ячейки, которые в 1 столбике имеют "100 грн." или "100 евро." Например. как изменить обработку так, что бы можно было считывать формат каждой ячейки и получать цену с "грн"/"евро" в итоге, так как чейчас считывается только 100. Сразу скажу. Вынужденно считываю файл именно так, так как сисадмин не хочет категорически устанавливать Эксель. Спасибо. |
|||
1
palsergeich
03.04.19
✎
22:55
|
Еще можно попробовать упороться и прочитать Excel как xml.
В УХ есть обработка которая так делает |
|||
2
palsergeich
03.04.19
✎
22:56
|
http://catalog.mista.ru/public/225624/ как пример
|
|||
3
Nysha1210
03.04.19
✎
22:56
|
Можете дать ссылку? Такая обработка считает формат ячейки?
|
|||
4
Nysha1210
03.04.19
✎
22:58
|
У меня в файле даты в формате Денежный. Эта обработка такой тип данных считает как число.
|
|||
5
Nysha1210
03.04.19
✎
22:58
|
Упс, цены в денежном формате.
|
|||
6
palsergeich
03.04.19
✎
22:59
|
Допилку ннапильником никто не отменял.
точки входа есть, идея есть, дальше - самостоятельно. |
|||
7
Nysha1210
03.04.19
✎
23:04
|
Спасибо. На том сайте я уже была. Обработку на почту так и не прислали ((((
|
|||
8
palsergeich
03.04.19
✎
23:07
|
http://catalog.mista.ru/public/300092/ Вот еще идея.
А зачем обработка? там весь код в статье, просто копируешь в свою, добавляешь реквизит при необходимости и все |
|||
9
palsergeich
03.04.19
✎
23:08
|
Весь код из статьи в модуль формы обработки, 1 реквизит и 1 кнопку уж сообразить как добавить - не думаю что сверх задача
|
|||
10
palsergeich
03.04.19
✎
23:09
|
А даже реквизитов не надо, надо только процедуру ПриОткрытии связать с событием формы
|
|||
11
Nysha1210
03.04.19
✎
23:11
|
Спасибо. Туплю. Просто сижу разбиаю код, но как определить денежный формат ячейки ну хоть убей не пойму((( Как строку?
|
|||
12
palsergeich
03.04.19
✎
23:13
|
Начни с малого.
Сделай 3 ячейки с разными форматами. Там есть определение формата ячейки и номер ее. И посмотри что в каком случае. |
|||
13
Nysha1210
03.04.19
✎
23:16
|
Ок. Как вариант. Просто сейчас вся разработка ведётся локально на компе, а потом уже будем переносить на сервер для всех. Вот сижу - разбираю код.
Спасибо |
|||
14
palsergeich
03.04.19
✎
23:17
|
(13) Тем и хорош метод чтения через платформенные механизмы XML или DOM - Ты не зависишь от окружения.
|
|||
15
palsergeich
03.04.19
✎
23:17
|
А вот с отлаженной дома обработкой через COM - на работе может быть сюрприз)
|
|||
16
Nysha1210
03.04.19
✎
23:23
|
НЕ заметила. Этот метод работает для файлов *.xlsx, а у меня *.xls. Поэтому перешла по ссылке на http://catalog.mista.ru/public/120961/. Тут программного кода нет, только скачать обработку можно.
|
|||
17
palsergeich
03.04.19
✎
23:26
|
(16) с xls - будут проблемы.
|
|||
18
palsergeich
03.04.19
✎
23:27
|
подключение по ADO ипортирует данные, но ничего не знает о формате...
|
|||
19
Nysha1210
03.04.19
✎
23:31
|
http://catalog.mista.ru/public/163642/ тут можно вроде словить денежный формат. Через либереофис.
|
|||
20
palsergeich
03.04.19
✎
23:33
|
Глупый вопрос, а есть гарантии, что админ захочет поставить Libre?
|
|||
21
Nysha1210
03.04.19
✎
23:34
|
У нас у всех он уже стоит))))
|
|||
22
Nysha1210
03.04.19
✎
23:35
|
Админ принципиально его всем ставит. Ну не любит от Эксель. Сказал - выкручивайся сама как хочешь ((((
|
|||
23
palsergeich
03.04.19
✎
23:36
|
Ну и конвертани libre xls в xlsx
(22) Скорее лицензий нет и денег на них тоже, а подставлятся он не хочет |
|||
24
Nysha1210
03.04.19
✎
23:40
|
Конвертировать всё время нет возможности. Прайс делают в другом месте и тянут автоматом. Так что с файлом исх ничего сделать не получается. Он вообще линукс обожает. Всё остальное для него - кошмар(((( Майкрософт тихо ненавидит. Ладно, спасибо. Часть кода у меня уже есть. Идеи как поймать формат тоже - буду пробовать разобраться с тем что с вашей помощью нашла. Спасибо, что хоть направление указали.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |