Автор | Сообщение |
|
| |
Пост N: 352
Зарегистрирован: 08.04.06
|
|
Отправлено: 04.07.09 20:49. Заголовок: OLE: Сделать DBF из XLS
Возникла такая вот необходимость... есть у кого рабочий вариант? Нужно ведь проверять все колонки на содержание в первой строке беспробельного латинского наименования, и чтобы ни одно наименование не повторялось, приводить ширину колонки к целочисленной, и наверное кучу ещё тонкостей... И ещё интересно: в Excel 2007 через OLE сохранение в виде DBF-файла сработает, или она там обрублено напрочь - в меню сохранения файла ведь DBF-варианта уже нет...
|
|
|
Ответов - 59
, стр:
1
2
3
All
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 04.07.09 22:00. Заголовок: А в чем собственно п..
А в чем собственно проблема, отрыть файл XLS через OLE, почитать его в цикле и зписать в DBF ?
|
|
|
|
| |
Пост N: 353
Зарегистрирован: 08.04.06
|
|
Отправлено: 05.07.09 17:40. Заголовок: fil пишет: А в чем ..
fil пишет: цитата: | А в чем собственно проблема |
| Проблема далеко не одна, часть из них я указал прямо в своём вопросе, и ещё может быть проблема с записью DBF в Excel 2007, - ты что, только название темы прочёл, а сообщение решил не читать?
|
|
|
|
| |
Пост N: 354
Зарегистрирован: 08.04.06
|
|
Отправлено: 13.07.09 08:16. Заголовок: Народ, так что, никт..
Народ, так что, никто не решал эту проблему? Проблема: нужно закинуть в базу накладную или прайс. Требовать от поставщиков юзверя DBF-файл уже нереально - 2007-й Офис, на который все потихоньку переходят, файлы в DBF-формате не сохраняет, да и не все с этим справляются даже в тех версиях M$ Office (чтобы колонки были целочисленной ширины, и т.п.). Остаётся файл XLS. Принимать его в виде XLS - проверить колонки, сформировать массив - наверное можно, НО работы море всё это реализовывать, при этом всё для принятия DBF-файла в программе уже сделано. Вывод: надо из XLS-файла самому делать DBF-файл, и принимать в базу уже его. Странно, что никто раньше до этого решения не додумался...
|
|
|
|
| |
Пост N: 355
Зарегистрирован: 08.04.06
|
|
Отправлено: 18.08.09 20:40. Заголовок: Почти справился с за..
Почти справился с задачей, но возник маленький ньюанс: надо как-то определять, записано в ячейке Excel'я число 40.00 или 40 целое, а как это сделать - не представляю... Подскажите, люди добрые! А ещё бы лучше определять это уже в Harbour'e, когда значение из Excel'я уже прочитано. Но тоже непонятно, как именно это сделать.
|
|
|
|
| постоянный участник
|
Пост N: 731
Зарегистрирован: 09.10.06
|
|
Отправлено: 18.08.09 22:31. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | надо как-то определять, записано в ячейке Excel'я число 40.00 или 40 целое |
| Обьект Range свойство NumberFormat - для 40,00 будет определено как "0.00", для 40 - "0"
|
|
|
|
| |
Пост N: 356
Зарегистрирован: 08.04.06
|
|
Отправлено: 19.08.09 08:54. Заголовок: Петр пишет: Обьект ..
Петр пишет: цитата: | Обьект Range свойство NumberFormat |
| Спасибо.
|
|
|
|
| постоянный участник
|
Пост N: 900
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.09 13:39. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | Почти справился с задачей |
| А результат покажешь ?
|
|
|
|
| |
Пост N: 357
Зарегистрирован: 08.04.06
|
|
Отправлено: 20.08.09 14:47. Заголовок: Andrey пишет: А рез..
Andrey пишет: Когда убедюсь, что оно работает :-) Написать мало, отладить надо, однако.
|
|
|
|
| |
Пост N: 358
Зарегистрирован: 08.04.06
|
|
Отправлено: 20.08.09 17:19. Заголовок: Очередная проблема: ..
Очередная проблема: не читается из XLS-файла дата, по крайней мере по oSheet:Cells(y, i):Value Смотрю в XLS-файл - а там все значения дат в этой колонке отображены решётками (########). Хотя когда какая-либо ячейка в этой колонке активна, в строке значения (fx) высвечивается нормальная дата, правильное значение. Смотрю ширину поля: 8. Может быть дело в этом, и надо ставить ширину 10, но мне-то нужно, чтобы функция работала всегда, безотносительно ширины колонки в Excel'e! Опять-таки, каким-то образом сам Excel может читать такие значения - ведь в строке значений они высвечиваются правильно... Что с этим делать - пока не представляю. Может, есть какие-то ещё функции получения значения из ячейки?
|
|
|
|
| |
Пост N: 359
Зарегистрирован: 08.04.06
|
|
Отправлено: 24.08.09 02:28. Заголовок: Поставил ширину коло..
Поставил ширину колонки даты 10, всё отображается без проблем, НО: читаются из ячеек этой колонки всё равно пустые значения!!! Никто с такой фишкой не сталкивался?
|
|
|
|
| |
Пост N: 360
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.09.09 22:53. Заголовок: Ещё одна проблема: о..
Ещё одна проблема: открываю с помощью WorkBooks:Open() файл, имя которого содержит пробелы. Excel выдаёт ошибку: Excel.Application:WORKBOOKS/14 DISP_E_BADPARAMCOUNT: OPEN что в общем понятно. Непонятно только, как с этим бороться. Пробовал заключать имя файла в кавычки - не помогает...
|
|
|
|
|
| Администратор
|
Пост N: 1209
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.09.09 13:19. Заголовок: Пробелы в имени тут ..
Пробелы в имени тут ни при чем. Скорее всего, имя документа надо преобразовать в кодировку ansi, или указан неверный путь (надо указывать полный путь к файлу)
|
|
|
|
| |
Пост N: 361
Зарегистрирован: 08.04.06
|
|
Отправлено: 22.09.09 05:31. Заголовок: Pasha пишет: надо п..
Pasha пишет: цитата: | надо преобразовать в кодировку ansi |
| Да, действительно, проблема была в кодировке... Так что осталась всего одна проблема - дата из Exel'евского файла всегда читается пустая...
|
|
|
|
| постоянный участник
|
Пост N: 974
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.12.09 22:43. Заголовок: Потребовалось теперь..
Потребовалось теперь мне сделать из XLS файл DBF. Структура простая: Текстовое поле, числовое поле (целое), числовое поле (сумма). Как узнать сколько в файле XLS кол-во строк, т.е. как в DBF функция LASTREC() или RecCount() ? И как сделать перебор "полей" XLS - файла ? Кинь пожалуйста пример .... Заранее спасибо !
|
|
|
|
| Администратор
|
Пост N: 1256
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.12.09 09:36. Заголовок: oRange = oExcel:Acti..
oRange = oExcel:ActiveCell:SpecialCells(xlLastCell) oRange:Row oRange:Column
|
|
|
|
| постоянный участник
|
Пост N: 975
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.12.09 18:20. Заголовок: Не совсем понятно !!..
Не совсем понятно !!! Хотелось бы в таком стиле: USE OPLANA NEW nRecKolvo := LASTREC() SELECT OPLATA GOTO TOP FOR nI := 1 TO nRecKolvo GOTO nI // моя обработка // NEXT
|
|
|
|
| Администратор
|
Пост N: 1259
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.12.09 21:28. Заголовок: Смысл в том, что выб..
Смысл в том, что выбирается последняя, т.е. нижняя правая ячейка документа. Затем определяются ее координаты. Это и есть количество строк и столбцов в документе. А затем - традиционный двойной цикл с обходом всех ячек.
|
|
|
|
| постоянный участник
|
Пост N: 980
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.09 08:01. Заголовок: А как открыть XLS фа..
А как открыть XLS файл, чтоб Екселя на экране не было ? Дайте пожалуйста пример ..... А то я только с Вордом работать умею (чуть-чуть).....
|
|
|
|
| Администратор
|
Пост N: 1260
Зарегистрирован: 23.05.05
|
|
Отправлено: 03.12.09 09:13. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как открыть XLS файл, чтоб Екселя на экране не было ? |
| oExcel := TOleAuto():New( "Excel.Application" ) oExcel:Visible := .f. oExcel:Workbooks:Open( cFile, 0 )
|
|
|
|
| постоянный участник
|
Пост N: 981
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.09 09:31. Заголовок: А как отловить, что ..
А как отловить, что файл уже открыт ?
|
|
|
Ответов - 59
, стр:
1
2
3
All
[только новые]
|
|