Разобрался немного как импортировать exel как источник данных для oledb. Вот кусок схемы с запросом на вывод всех колонок
code_32082.txt
Проблема заключается в том, что при выводе, половина столбцов импортируется пустыми, если в них записать текстовые значения, то они выводятся, но там как назло цифры. Более того, в самой таблице некоторые ячейки объединены друг с другом и имеют разный формат (числовой).
Так как справки по выводу эксель таблиц можно сказать что практически нет (кроме примера в программе, который ничем не помог в моем случае), вопрос к спецам, к TAD и прочим. Кусок таблицы со всеми ее свойствами прилагаю в файле. Уделите пару минут, хотя бы определиться реально ее вывести в таком виде в котором она есть или придется саму структуру таблицы переделывать. Я уже все перепробовал, все равно половиину не показывает.
вот пример таблицы - http://zalil.ru/34785077 где половина столбцов выводится пустыми. При загрузке в пример из справки происходит тоже самое
Этот топик читают: Гость
Ответов: 257
Рейтинг: -2
|
|||
карма: 0 |
| ||
файлы: 1 | code_32082.txt [1KB] [120] |
Ответов: 8928
Рейтинг: 823
|
|||
mudfactory, выложенный для примера кусочек имеет формат *.txt а не *.xls Может сначала пропарсить его, исключив не нужное, а уже потом загонять в БД
|
|||
карма: 19 |
|
Ответов: 257
Рейтинг: -2
|
|||
как txt если это xls. и что там парсить если там 20 строк
|
|||
карма: 0 |
|
Ответов: 8928
Рейтинг: 823
|
|||
mudfactory, а в параллельной теме был *.txt
Шапка в Excel всегда одинаковая, записи всегда с 9-ой строки? |
|||
карма: 19 |
|
Ответов: 257
Рейтинг: -2
|
|||
таблица такая как я залил в первом сообщении, только она большая. Видимо нужно прописывать другой драйвер в DS_OLEDB и использовать другой синтаксис. Я заметил такую хрень, если ставишь 0 в одну из колонок сверху таблицы, где ничего не заполнено, начинает отображаться по-другому колонка. Вот как сделать чтоб эта таблица грузилась в том виде в котором она есть...
|
|||
карма: 0 |
|
Ответов: 8928
Рейтинг: 823
|
|||
mudfactory, сложную проблемму Вы сами себе создали
Какой смысл в объединении ячеек Никакой запрос не содержащий структуру этих объединений не поможет, да и можно-ли составить такие запросы |
|||
карма: 19 |
|
Ответов: 257
Рейтинг: -2
|
|||
так экспортирует 1с. эти объединения не на что не влияют - выводится по ячейкам так как есть, просто почему то столбцы где колличество не отображаются, так как имеют другой тип данных в самой таблице. Как определить тип данных перед импортом в оле пока не разобрался. Вот тут есть кое-какая инфа, но я пока не могу разобраться http://www.connectionstrings.com/excel/
------------ Дoбавленo в 23.03: имена колонок oledb тоже не понятно откуда берет. точно не из первых строчек, подписывает f1 f2 и т.д. задать в элементе таблицы имена столбцов не получается, выдает ошибку. |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Леонид писал(а): Шапка в Excel всегда одинаковая, записи всегда с 9-ой строки?Нужно в HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesExcel изменить REG_DWORD TypeGuessRows=0 Только тогда можно считать тип колонок. |
|||
карма: 25 |
|
Ответов: 257
Рейтинг: -2
|
|||
да даже если удалить шапку в таблице, все равно он не отображает колонки в колличеством. Подскажите хоть какие-нибудь идеи как можно ее вывести. Конечно редактировать ее перед выводом не особо привлекательный вариант. Она каждый раз одна и та же эта таблица, только значения меняются. Может возможно как то настроить именно под этот тип колонок, типа как в sqlite делается? Весь день убил на нее, так и ничего не придумал(
------------ Дoбавленo в 00.15: Кто делал этот компонент, расскажите про синтакс? Куда и как там тип данных вписывать? Судя по гуглу распространенная проблема, но касаемо решения по хайасму естественно ничего нет. ------------ Дoбавленo в 00.25: Измените пожалуйста в справке к компоненту - Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; Это решает проблему отображения таблиц с разным типом данных. четырехчасовые выжимания гугла дали результат |
|||
карма: 0 |
|
Ответов: 8928
Рейтинг: 823
|
|||
mudfactory, решилось?
Возмите и HiAsm-овский парсер Вашей таблицы (на Excel 2003 справляется) myexportexcel.rar |
|||
карма: 19 |
| ||
файлы: 1 | myexportexcel.rar [3.1KB] [119] |
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
mudfactory писал(а): Это решает проблему отображения таблиц с разным типом данных. четырехчасовые выжимания гугла дали результатА вот эта информация в справке для кого Различные типы подключения можно посмотреть вот по этой ссылке http://www.connectionstrings.com/ И незачем было четыре часа лазить по гуглу, когда по приведенной ссылке все описано, в том числе и вот это -- Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; |
|||
карма: 22 |
|
Ответов: 257
Рейтинг: -2
|
|||
А подскажите, не могу найти как осуществлять поиск по загрузившимся данным? И как туда записывать? id строк же нет.
У меня задача эту таблицу загрузить как db (вроде сделал) Осуществлять поиск по значениям колонок, например найти строчку где в первом столбце есть %text% Изменять значения в ячейках что в итоге сам файл с таблицей менялся, его потом обратно надо будет загрузить, откуда выгрузили |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
mudfactory писал(а): У меня задача эту таблицу загрузить как db1. Зачем mudfactory писал(а): У меня задача эту таблицу загрузить как db Н е п о н и м а ю! |
|||
карма: 25 |
|
Ответов: 257
Рейтинг: -2
|
|||
В общем объясняю. Есть таблица - импорт ТМЦ из 1С. С данными этой таблицы нужно работать. Подключаясь с ней с помощью odbc, немного непонятен синтакс запросов да и номеров строк по сути нет в этом варианте, что создает определенные сложности. В итге данные в самом файле xls должны меняться (либо должен создаваться другой файл с измененной таблицей),чтоб потом ее загружать обратно в 1С.
Я думаю сделать так: загружаем таблицу в программу через ODBC как в примере в этой теме. Далее переводим все что там есть в таблицу БД, с которой работает программа. При необходимости экспорта - создаем файл xls из таблицы БД программы. В варианте - вносить все изменения, осуществлять поиск в xls файле, работая через ODBC будет дико тормозить, да и опять же я не понимаю как там запросы составлять и данные вытягивать, так как нет id строк. Может конечно лучше сделать как то по-другому, я еще не особо в этом разбираюсь. |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
1. А на такую проблему как лицензия ещё не наталкивался ?
Лицензиат обязуется не допускать нарушений исключительных прав Правообладателя на ПРОГРАММНЫЙ ПРОДУКТ, в частности, не совершать и не допускать совершения третьими лицами следующих действий без специального письменного разрешения Правообладателя:
Не шути с огнём - дороговато обойдется.
вносить какие-либо изменения в код ПРОГРАММНОГО ПРОДУКТА, содержимое баз данных и других наборов данных, в которых система хранит информацию, за исключением тех изменений, которые вносятся штатными средствами, входящими в состав ПРОГРАММНОГО ПРОДУКТА и описанными в сопроводительной документации; доступ к информационной базе ПРОГРАММНОГО ПРОДУКТА и построение систем на основе ПРОГРАММНОГО ПРОДУКТА с помощью средств и технологических решений, не предусмотренных в сопроводительной документации 2. mudfactory писал(а): Может конечно лучше сделать как то по-другому, я еще не особо в этом разбираюсь. |
|||
карма: 25 |
|