Вверх ↑
Этот топик читают: Гость
Ответов: 257
Рейтинг: -2
#1: 2013-10-20 21:35:45 ЛС | профиль | цитата
Разобрался немного как импортировать exel как источник данных для oledb. Вот кусок схемы с запросом на вывод всех колонок

code_32082.txt

Проблема заключается в том, что при выводе, половина столбцов импортируется пустыми, если в них записать текстовые значения, то они выводятся, но там как назло цифры. Более того, в самой таблице некоторые ячейки объединены друг с другом и имеют разный формат (числовой).

Так как справки по выводу эксель таблиц можно сказать что практически нет (кроме примера в программе, который ничем не помог в моем случае), вопрос к спецам, к TAD и прочим. Кусок таблицы со всеми ее свойствами прилагаю в файле. Уделите пару минут, хотя бы определиться реально ее вывести в таком виде в котором она есть или придется саму структуру таблицы переделывать. Я уже все перепробовал, все равно половиину не показывает.

вот пример таблицы - http://zalil.ru/34785077 где половина столбцов выводится пустыми. При загрузке в пример из справки происходит тоже самое
карма: 0

0
файлы: 1code_32082.txt [1KB] [120]
Ответов: 8928
Рейтинг: 823
#2: 2013-10-20 22:02:41 ЛС | профиль | цитата
mudfactory, выложенный для примера кусочек имеет формат *.txt а не *.xls Может сначала пропарсить его, исключив не нужное, а уже потом загонять в БД
карма: 19

0
Ответов: 257
Рейтинг: -2
#3: 2013-10-20 22:08:12 ЛС | профиль | цитата
как txt если это xls. и что там парсить если там 20 строк
карма: 0

0
Ответов: 8928
Рейтинг: 823
#4: 2013-10-20 22:25:55 ЛС | профиль | цитата
mudfactory, а в параллельной теме был *.txt
Шапка в Excel всегда одинаковая, записи всегда с 9-ой строки?
карма: 19

0
Ответов: 257
Рейтинг: -2
#5: 2013-10-20 22:56:51 ЛС | профиль | цитата
таблица такая как я залил в первом сообщении, только она большая. Видимо нужно прописывать другой драйвер в DS_OLEDB и использовать другой синтаксис. Я заметил такую хрень, если ставишь 0 в одну из колонок сверху таблицы, где ничего не заполнено, начинает отображаться по-другому колонка. Вот как сделать чтоб эта таблица грузилась в том виде в котором она есть...
карма: 0

0
Ответов: 8928
Рейтинг: 823
#6: 2013-10-20 22:59:06 ЛС | профиль | цитата
mudfactory, сложную проблемму Вы сами себе создали
Какой смысл в объединении ячеек Никакой запрос не содержащий структуру этих объединений не поможет, да и можно-ли составить такие запросы
карма: 19

0
Ответов: 257
Рейтинг: -2
#7: 2013-10-20 23:03:30 ЛС | профиль | цитата
так экспортирует 1с. эти объединения не на что не влияют - выводится по ячейкам так как есть, просто почему то столбцы где колличество не отображаются, так как имеют другой тип данных в самой таблице. Как определить тип данных перед импортом в оле пока не разобрался. Вот тут есть кое-какая инфа, но я пока не могу разобраться http://www.connectionstrings.com/excel/
------------ Дoбавленo в 23.03:
имена колонок oledb тоже не понятно откуда берет. точно не из первых строчек, подписывает f1 f2 и т.д. задать в элементе таблицы имена столбцов не получается, выдает ошибку.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#8: 2013-10-20 23:34:31 ЛС | профиль | цитата
Леонид писал(а):
Шапка в Excel всегда одинаковая, записи всегда с 9-ой строки?
Всегда, по умалчванию TypeGuessRows=8
Нужно в HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesExcel изменить REG_DWORD TypeGuessRows=0
Только тогда можно считать тип колонок.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 257
Рейтинг: -2
#9: 2013-10-21 00:25:10 ЛС | профиль | цитата
да даже если удалить шапку в таблице, все равно он не отображает колонки в колличеством. Подскажите хоть какие-нибудь идеи как можно ее вывести. Конечно редактировать ее перед выводом не особо привлекательный вариант. Она каждый раз одна и та же эта таблица, только значения меняются. Может возможно как то настроить именно под этот тип колонок, типа как в sqlite делается? Весь день убил на нее, так и ничего не придумал(
------------ Дoбавленo в 00.15:
Кто делал этот компонент, расскажите про синтакс? Куда и как там тип данных вписывать? Судя по гуглу распространенная проблема, но касаемо решения по хайасму естественно ничего нет.
------------ Дoбавленo в 00.25:
Измените пожалуйста в справке к компоненту - Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; Это решает проблему отображения таблиц с разным типом данных. четырехчасовые выжимания гугла дали результат
карма: 0

0
Ответов: 8928
Рейтинг: 823
#10: 2013-10-21 01:26:36 ЛС | профиль | цитата
mudfactory, решилось?
Возмите и HiAsm-овский парсер Вашей таблицы (на Excel 2003 справляется) myexportexcel.rar
карма: 19

0
файлы: 1myexportexcel.rar [3.1KB] [119]
Разработчик
Ответов: 26163
Рейтинг: 2127
#11: 2013-10-21 01:35:01 ЛС | профиль | цитата
mudfactory писал(а):
Это решает проблему отображения таблиц с разным типом данных. четырехчасовые выжимания гугла дали результат

А вот эта информация в справке для кого

Различные типы подключения можно посмотреть вот по этой ссылке http://www.connectionstrings.com/


И незачем было четыре часа лазить по гуглу, когда по приведенной ссылке все описано, в том числе и вот это -- Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
карма: 22

0
Ответов: 257
Рейтинг: -2
#12: 2013-10-21 02:22:05 ЛС | профиль | цитата
А подскажите, не могу найти как осуществлять поиск по загрузившимся данным? И как туда записывать? id строк же нет.

У меня задача эту таблицу загрузить как db (вроде сделал)
Осуществлять поиск по значениям колонок, например найти строчку где в первом столбце есть %text%
Изменять значения в ячейках что в итоге сам файл с таблицей менялся, его потом обратно надо будет загрузить, откуда выгрузили
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#13: 2013-10-21 16:37:33 ЛС | профиль | цитата
mudfactory писал(а):
У меня задача эту таблицу загрузить как db
mudfactory, вот объясни мне членораздельно.
1. Зачем
mudfactory писал(а):
У меня задача эту таблицу загрузить как db
Подключившись к таблице ты уже можешь читать, редактировать и писать строки прямо в неё. Осуществлять поиск и замену. Да делать всё, что захочешь.
Н е п о н и м а ю!
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 257
Рейтинг: -2
#14: 2013-10-21 18:30:06 ЛС | профиль | цитата
В общем объясняю. Есть таблица - импорт ТМЦ из 1С. С данными этой таблицы нужно работать. Подключаясь с ней с помощью odbc, немного непонятен синтакс запросов да и номеров строк по сути нет в этом варианте, что создает определенные сложности. В итге данные в самом файле xls должны меняться (либо должен создаваться другой файл с измененной таблицей),чтоб потом ее загружать обратно в 1С.

Я думаю сделать так:
загружаем таблицу в программу через ODBC как в примере в этой теме. Далее переводим все что там есть в таблицу БД, с которой работает программа. При необходимости экспорта - создаем файл xls из таблицы БД программы. В варианте - вносить все изменения, осуществлять поиск в xls файле, работая через ODBC будет дико тормозить, да и опять же я не понимаю как там запросы составлять и данные вытягивать, так как нет id строк.

Может конечно лучше сделать как то по-другому, я еще не особо в этом разбираюсь.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#15: 2013-10-21 19:33:53 ЛС | профиль | цитата
1. А на такую проблему как лицензия ещё не наталкивался ?
Лицензиат обязуется не допускать нарушений исключительных прав Правообладателя на ПРОГРАММНЫЙ ПРОДУКТ, в частности, не совершать и не допускать совершения третьими лицами следующих действий без специального письменного разрешения Правообладателя:

вносить какие-либо изменения в код ПРОГРАММНОГО ПРОДУКТА, содержимое баз данных и других наборов данных, в которых система хранит информацию, за исключением тех изменений, которые вносятся штатными средствами, входящими в состав ПРОГРАММНОГО ПРОДУКТА и описанными в сопроводительной документации;

доступ к информационной базе ПРОГРАММНОГО ПРОДУКТА и построение систем на основе ПРОГРАММНОГО ПРОДУКТА с помощью средств и технологических решений, не предусмотренных в сопроводительной документации
Не шути с огнём - дороговато обойдется.
2.
mudfactory писал(а):
Может конечно лучше сделать как то по-другому, я еще не особо в этом разбираюсь.
Извини, но Каждый должен заниматься своим делом (с).
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)