Как решить Неверную подпись заголовка;читать 0x6576206C6D783F3C, ожидается 0xE11AB1A1E011CFD0 ошибка Java? - PullRequest
0 голосов
/ 01 июня 2018

Я экспортирую файл из веб-приложения в формате .xls.Когда я пытаюсь прочитать этот файл, он выдает ошибку как:

java.io.IOException: неверная подпись заголовка;прочитайте 0x6576206C6D783F3C, ожидается 0xE11AB1A1E011CFD0

Это экспортированный файл, поэтому не удалось изменить формат.

Вот мой код и прикрепленный файл Excel:

public void verifyExportedData() throws Exception{
    String filename = "Top_Down_Planning_by_Investment.xls"      
    File=new FileInputStream(new File("testdata/"+filename));
    HSSFWorkbook workbook = new HSSFWorkbook(File);
    HSSFSheet sheet=workbook.getSheet("Top Down Planning by Investmen");
    DataFormatter formatter = new DataFormatter();
    System.out.println("Cell data : "+sheet.getRow(0).getCell(1));
}

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 01 июня 2018

«Ожидаемые» и «фактические» сигнатуры файлов выводятся в порядке, обратном нормальному.(Вероятно, это вещь с прямым порядком байтов и с прямым порядком байтов ...)

Согласно источнику, который я нашел в Интернете, подпись файла для файла .xls равна

  D0 CF 11 E0 A1 B1 1A E1

, что соответствует «ожидаемой» подписи (в обратном порядке).Поэтому, если я переверну «фактическую» подпись, я получу

  3C 3F 78 6D 6C 20 76 65

. Если я преобразую этот шестнадцатеричный код в ASCII, я получу

  '<' '?' 'x' 'm' 'l' ' ' 'v' 'e'

или

  <?xml ve

Это выглядит знакомо?Вот типичный заголовок XML-файла:

  <?xml version="1.0" encoding="UTF-8" standalone="no" ?>

Вы, похоже, экспортировали файл в формате на основе XML, а не в устаревшем формате ".xls".Я предполагаю, что файл в формате ".xlxs" или аналогичном.

Я думаю, что вам нужно использовать XSSF, а не HSSH:

...