Самый легкий способ сравнить два файла Excel в Java?

Каждый компонент проходит свой жизненный цикл и является независимым независимо от того, отображаются ли они в компоненте с состоянием или без состояния. Также компонент с состоянием в компоненте без состояния не влияет на родительский компонент.

Единственное предостережение в том, что компонент выше в иерархии останавливает рендеринг, реализуя shouldComponentUpdate или расширяя PureComponent (не ре-рендеринг, когда нет изменений в реквизите или состоянии) или by using React.memo функциональные компоненты. Методы или обновления жизненного цикла детей также не будут вызваны.

16
задан Andrew Swan 15 May 2009 в 05:58
поделиться

7 ответов

Вот что я в итоге сделал (тяжелая работа была сделана DBUnit ):

/**
 * Compares the data in the two Excel files represented by the given input
 * streams, closing them on completion
 * 
 * @param expected can't be <code>null</code>
 * @param actual can't be <code>null</code>
 * @throws Exception
 */
private void compareExcelFiles(InputStream expected, InputStream actual)
  throws Exception
{
  try {
    Assertion.assertEquals(new XlsDataSet(expected), new XlsDataSet(actual));
  }
  finally {
    IOUtils.closeQuietly(expected);
    IOUtils.closeQuietly(actual);
  }
}

Это сравнивает данные в двух файлах без риска ложной отрицательные стороны любых нерелевантных метаданных, которые могут отличаться. Надеюсь, это кому-то поможет.

8
ответ дан 30 November 2019 в 17:17
поделиться

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

Однако, поскольку файлы Excel содержат множество метаданных, файлы, вероятно, никогда не будут идентичный побайтный, как указал Джеймс Берджесс. Так что вам понадобится другой вид сравнения для вашего теста.

Я бы порекомендовал каким-то образом сгенерировать "каноническую" форму из файла Excel, т.е. прочитать сгенерированный файл Excel и преобразовать его в более простой формат (CSV или что-то подобное. ), который сохранит только ту информацию, которую вы хотите проверить. Затем вы можете использовать «каноническую форму» для сравнения с ожидаемым результатом (также, конечно, в канонической форме).

Apache POI может быть полезен для чтения файла.

BTW: чтение всего файла проверка его правильности обычно не считается модульным тестом. Это интеграционный тест ...

6
ответ дан 30 November 2019 в 17:17
поделиться

Вы можете использовать javaxdelta, чтобы проверить, совпадают ли два файла. Его можно найти здесь:

http://javaxdelta.sourceforge.net/

2
ответ дан 30 November 2019 в 17:17
поделиться

Пожалуйста, посмотрите сайт для сравнения двоичных файлов, http://www.velocityreviews.com/forums/t123770-re-java -код-для-определения-двоичного-файла-равенства.html

Тигр

0
ответ дан 30 November 2019 в 17:17
поделиться

Может быть ... сравнить дайджесты MD5 каждого файла? Я уверен, что есть много способов сделать это. Вы можете просто открыть оба файла и сравнить каждый байт.

РЕДАКТИРОВАТЬ: Джеймс заявил, что формат XLS может иметь различия в метаданных. Возможно, вам стоит использовать тот же интерфейс, который вы использовали для создания файлов xls, чтобы открыть их и сравнить значения от ячейки к ячейке?

-1
ответ дан 30 November 2019 в 17:17
поделиться

Только что обнаружил, что что-то есть в FileUtils commons-io. Спасибо за другие ответы.

0
ответ дан 30 November 2019 в 17:17
поделиться

Вы можете использовать Beyond Compare 3 , который может быть запущен из командной строки и поддерживает различные способы сравнения файлов Excel, в том числе:

  • Сравнение листов Excel с таблицами базы данных
  • Проверка всего текстового содержимого
  • Проверка текстового содержимого с некоторым форматированием
0
ответ дан 30 November 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: