Перейти к содержимому

Фотография

Сравнить два файла


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 fan118

fan118

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • Город:Тюмень

Отправлено 27 февраля 2008 - 07:45

Доброго времени суток. У меня возникла следующая проблема: необходимо сравнить два excel-ских файла с расширением xls. Есть эталон, второй файл формируется
при помощи silktest, нужно чтоб совпадало все, за исключением даты отчета, при несовпадении записать в лог. Возможно такое сделать с помощью ilktest?.
Заранее благодарен.
  • 0

#2 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 27 февраля 2008 - 09:50

Доброго времени суток. У меня возникла следующая проблема: необходимо сравнить два excel-ских файла с расширением xls. Есть эталон, второй файл формируется
при помощи silktest, нужно чтоб совпадало все, за исключением даты отчета, при несовпадении записать в лог. Возможно такое сделать с помощью ilktest?.
Заранее благодарен.

СилкТест работает с Экселем как с базой данных, таблицы которой соответствуют листам, поля таблицы именуются в первой строке листа, а данные идут в строках под ними. Если ваши файлы удовлетворяют данному формату, то тогда задача сводится к считыванию списка записей и поэлементному сравнению.
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#3 fan118

fan118

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • Город:Тюмень

Отправлено 27 февраля 2008 - 11:29

Дело в том что в таблицах некоторые ячейки объединены, а именно самая верхняя строчка есть объединение нескольких ячеек. Выборку делаю типа select * from [sheet1$]
но как это все считать, пытался так while (DB_FetchNext(hsql,s1) ) выдает ошибку Error: (HY000) [Microsoft][Драйвер ODBC Excel] Переполнение числового поля.
Как быть в этом случае? Файл Excel я прикрепил.

Прикрепленные файлы

  • Прикрепленный файл  xxx.bmp   217,9К   48 Количество загрузок:

  • 0

#4 fan118

fan118

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • Город:Тюмень

Отправлено 27 февраля 2008 - 11:49

Если в ячейках стоят только цифры он отказывается их считывать, если слова или пустые значения, то считывает. Почему?
  • 0

#5 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 27 февраля 2008 - 12:33

Дело в том что в таблицах некоторые ячейки объединены, а именно самая верхняя строчка есть объединение нескольких ячеек. Выборку делаю типа select * from [sheet1$]
но как это все считать, пытался так while (DB_FetchNext(hsql,s1) ) выдает ошибку Error: (HY000) [Microsoft][Драйвер ODBC Excel] Переполнение числового поля.
Как быть в этом случае? Файл Excel я прикрепил.

Не, стоп. Из такой таблицы данные не извлекаются. Вы уточняйте, что этот файл сгенерен не силком, а во время выполнения скрипта. Силк работает с Экселем через ОДБС как с базой данных, то есть никаких объединений ячеек не воспринимает. В вашем случае тогда подумайте в направлении JScript программы, которая извлечет ячейки обеих таблиц (и эталона и сгенеренной), а затем уже сверит. И такой скрипт уже запускать из командной строки.

Запомните, Силк работает с Эксель только как с базой данных. Не более.
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#6 fan118

fan118

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • Город:Тюмень

Отправлено 28 февраля 2008 - 03:53

Ясна, я думал, точнее надеялся, что можно все с же средствами силка обойтись, в любом случае спасибо за совет.
  • 0

#7 Derzai

Derzai

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Сергей

Отправлено 23 апреля 2008 - 12:22

Ясна, я думал, точнее надеялся, что можно все с же средствами силка обойтись, в любом случае спасибо за совет.


Намного реальней написать скриптик на вбс, и его запускать с силка... А этот вбс уже может работать с объектом екселя.
Если поподробней, могу рассказать.
  • 0

#8 vass

vass

    Опытный участник

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 24 апреля 2008 - 09:29

Ясна, я думал, точнее надеялся, что можно все с же средствами силка обойтись, в любом случае спасибо за совет.


Намного реальней написать скриптик на вбс, и его запускать с силка... А этот вбс уже может работать с объектом екселя.
Если поподробней, могу рассказать.

Не гремите ключами от тайн! (С) Ежи Лец
Рассказывайте. Покажите хотя бы простейший пример : открытие файла, обращение к заданной ячейке заданного листа, изменение атрибутов, выход.
Будет очень познавательно.

PS: А еще - попробуйте, сработает ли Ваше предложение, когда не установлен Офис/Ворд. Ну или установлен OpenOffice :crazy:
  • 0

#9 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 24 апреля 2008 - 11:01

Рассказывайте. Покажите хотя бы простейший пример : открытие файла, обращение к заданной ячейке заданного листа, изменение атрибутов, выход.
Будет очень познавательно.

PS: А еще - попробуйте, сработает ли Ваше предложение, когда не установлен Офис/Ворд. Ну или установлен OpenOffice :crazy:


Добрый день.
Я приаттачил файл ExcelOLE.txt. Переименуйте его в ExcelOLE.t, откройте в Силке и запустите функцию main (F9).
Эта функция создаст файл C:\testole.xls и запишет в ячейку B2 текст "Dmitry was here".
Реализовано с помощью JScript.
Это просто для интереса.

Работает так: в той же папке, где находится файл скрипта, создается временный файл excel_ole_tmp.js, затем этот файл запускается и удаляется. Если интересно посмотреть на созданный файл - просто закомментируйте строку SYS_RemoveFile(sFile).
Через OLE можно делать с экселевскими файлами практически все, что угодно: работать с ячейками, листами, диаграммами, менять аттрибуты ячеек и т.д.

Вообще-то этот способ не очень хорош, так как используется дополнительная утилита wscript (хоть она и есть в поставке Windows 2k и выше).
Плюс, в данном примере записывается текст в ячейку, а если потребуется сделать обратное действие (считать текст), то придется создавать временный файл.
Я считаю, что если уж есть подобная необходимость, то лучше написать DLLку с необходимыми функциями.

P.S. vass, проверь, пожалуйста, на компьютере, где нет установленного офиса. Самому интересно, отработает ли, а компьютера без офиса под рукой нету.

Прикрепленные файлы

  • Прикрепленный файл  ExcelOLE.txt   1,79К   50 Количество загрузок:

  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#10 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 24 апреля 2008 - 12:09

P.S. vass, проверь, пожалуйста, на компьютере, где нет установленного офиса. Самому интересно, отработает ли, а компьютера без офиса под рукой нету.

Вообще-то, если нет ни офиса или ничего подобного ему, то естественно не сработает. И понятно почему. OLE-объекты-то тоже с чем-то поставляются. Но, я думаю, это уже лишнее.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных