Ошибка загрузки excel unable to recognize ole stream

Мне не удалось прочитать файл Excel из репозитория сервера pentaho ETL.
Я получаю такую ​​ошибку:

unable to recognize OLE stream

Что означает эта ошибка?

Вы проверили правильность формата файла? т.е. csv сохранен как xls.


— Adrian

07.09.2018 08:20

Да, большое спасибо, @Adrian, это сработало. Страница xml была сохранена как xls. ТАК, теперь он работает. Большое спасибо


— aditya goud

07.09.2018 14:51

Рад, что смог помочь!


— Adrian

10.09.2018 06:23

Поднятие тревоги для долго выполняющихся методов в Spring Boot

Система управления парковками с использованием HTML, CSS и JavaScript

CSS: FlexBox

CSS: FlexBox

Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.

Почему в Python есть оператор "pass"?

Принятие принципов SOLID в Spring Boot: Создание обслуживаемых и масштабируемых приложений

Коллекции в Laravel более простым способом


Ответы
2

Смотрите решение в комментариях.

Файл содержал XML-страницу, сохраненную как файл .xls. Преобразование этого файла решило проблему.

При двойном щелчке по входу Microsoft Excel измените тип электронной таблицы (движок) на Excel 2007 вместо Excel 97-2003, который будет выбран по умолчанию, теперь вы можете добавить свой файл Excel, и поля будут созданы.

Это может быть полезно, но все еще не отвечает на вопрос What does that error mean?, пожалуйста, предоставьте более подробную информацию о предлагаемом вами исправлении.


— phoenixstudio

18.01.2021 12:20

Другие вопросы по теме

Мне не удалось прочитать файл Excel из репозитория сервера pentaho ETL.
Я получаю такую ​​ошибку:

unable to recognize OLE stream

Что означает эта ошибка?

Вы проверили правильность формата файла? т.е. csv сохранен как xls.


— Adrian

07.09.2018 08:20

Да, большое спасибо, @Adrian, это сработало. Страница xml была сохранена как xls. ТАК, теперь он работает. Большое спасибо


— aditya goud

07.09.2018 14:51

Рад, что смог помочь!


— Adrian

10.09.2018 06:23

другой маршрут в Flask Python

другой маршрут в Flask Python

Flask — это фреймворк, который поддерживает веб-приложения. В этой статье я покажу, как мы можем использовать @app .route в flask, чтобы иметь другую…

Простое руководство по тестированию взаимодействия с пользователем с помощью библиотеки тестирования React

Использование ob_flush() в PHP при ожидании cURL

Тенденции развития PHP - почему люди выбирают его?

Принцип подстановки Лискова

Принцип подстановки Лискова

Принцип подстановки Лискова (LSP) — это принцип объектно-ориентированного программирования, который гласит, что объекты суперкласса должны иметь…

Версия Java на основе версии загрузки

Версия Java на основе версии загрузки

Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.


Ответы
2

Смотрите решение в комментариях.

Файл содержал XML-страницу, сохраненную как файл .xls. Преобразование этого файла решило проблему.

При двойном щелчке по входу Microsoft Excel измените тип электронной таблицы (движок) на Excel 2007 вместо Excel 97-2003, который будет выбран по умолчанию, теперь вы можете добавить свой файл Excel, и поля будут созданы.

Это может быть полезно, но все еще не отвечает на вопрос What does that error mean?, пожалуйста, предоставьте более подробную информацию о предлагаемом вами исправлении.


— phoenixstudio

18.01.2021 12:20

Другие вопросы по теме

Проблема, возникшая недавно, после экспорта Excle из системы, измените содержимое некоторых полей Excel, а затем импортируйте в Excel, читая Excel через jxl, исключая чтение файла jxl

jxl.read.biff.BiffException: Unable to recognize OLE stream    
    at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)    
    at jxl.read.biff.File.<init>(File.java:127)    
    at jxl.Workbook.getWorkbook(Workbook.java:221)    
    at jxl.Workbook.getWorkbook(Workbook.java:198)  

Это означает, что импортированный файл Excel не является стандартным OLE-файлом, распознаваемым jxl, но, похоже, он открывается в Excle, а затем я снова сохраняю этот Excel как Excel и обнаруживаю, что его тип сохранения по умолчанию — «веб-страница с одним файлом» (Excle может быть открыт с помощью EditPlus. Это файл веб-страницы), а затем измените тип безопасности на Microsoft Office Excel, сохраните импорт, и вы сможете импортировать его правильно.

Другая возможная причина: проблема версии Excel

Однако нет необходимости импортировать, сохраняя как.

1. Чтение в Excel основано на тексте.

2. Экспортируйте Excel, экспортируйте способом, который соответствует jxl

public void outPutExcel(List<InvoiceRequisitionSo> result,HttpServletResponse response ){
    OutputStream os = null;
    try{
        os = response.getOutputStream();
    }catch (IOException el){

    }
    response.reset();
    response.setHeader("Content-disposition", "attachment; filename=InvoiceRequisitionListToExcel.xls");
    response.setContentType("application/msexcel");
    WritableWorkbook wwb=null;
    WritableSheet ws=null;
    WritableCellFormat cellFormat = new WritableCellFormat();
    WritableCellFormat cellFormatContent = new WritableCellFormat();
    WritableFont font = new WritableFont (WritableFont.createFont (" "), 10, WritableFont.NO_BOLD);
         WritableFont font1 = new WritableFont (WritableFont.createFont (" "), 10, WritableFont.NO_BOLD);
    try{
       wwb = Workbook.createWorkbook(os);
               ws = wwb.createSheet («Заявка на счет в головном офисе», 0);
       font.setColour(Colour.WHITE);
       WritableCellFormat cellFormatContentt = new WritableCellFormat(font);
       font1.setColour(Colour.RED);
       WritableCellFormat cellFormatContentred = new WritableCellFormat(font1);
       ws.getSettings().setDefaultColumnWidth(18);
               // Установить формат ячейки
     cellFormat.setBackground(Colour.GRAY_25);
       cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
       cellFormatContent.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
       cellFormatContentt.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
       int i = 0;
       for (InvoiceRequisitionSo so : result) {
             ws.addCell(new Label(0,i,so.getInvoice(),cellFormatContentred ));
                             //Объединить ячейки
         ws.mergeCells(1, i , 2, i );
              ws.addCell(new Label(1, i, so.getEno(), cellFormatContent));
              i++;
      }
    }catch (Exception e){

    } finally{
            try {
                wwb.write();
                wwb.close();
                os.close();
            } catch (Exception e) {

            }
        }
}

I was trying to connect my Java program with an Excel file. I have did upto this. But it throws this excepion

Unable to recognize OLE stream

Please, help me to complete this.

import jxl.*;
import java.io.*;

public class excel
{
      public static void main(String[] args)throws Exception
      {

       File ex=new File("D:/worksps/test.xlsx");
       Workbook w= Workbook.getWorkbook(ex);
       Sheet s= w.getSheet(0);
       for(int i=0;i<s.getColumns();i++)
       {
         for(int j=0;j<s.getRows();j++)
         {
               Cell cell=s.getCell(i, j);
               System.out.println("     "+cell.getContents());
         }
         System.out.println("n");
       }
      }
}

bluish's user avatar

bluish

25.6k27 gold badges119 silver badges177 bronze badges

asked Mar 31, 2011 at 9:23

V I J E S H's user avatar

V I J E S HV I J E S H

7,32410 gold badges28 silver badges37 bronze badges

0

JXL supports Excel worksheets created in Excecl 95/97 and 2000 —

Read the below in the official JXL site — http://www.andykhan.com/jexcelapi/

Features

Reads data from Excel 95, 97, 2000
workbooks Reads and writes formulas
(Excel 97 and later only) Generates
spreadsheets in Excel 2000 format

Your excel sheet seems to be created after Excel 2000. That seems to be the problem.

If you want to read Excel files created after Excel 2000 then you should use Apache POI. It is also an easy to use API and supports MS Excel 97 to MS Excel 2008.

answered Mar 31, 2011 at 9:43

Pushkar's user avatar

3

Usually testers will save the excel document in current installed version but for data driven framework — excel file need to save in 97-2003 file format.

below is the code to call the excel sheets.

String[][] data=null;

@DataProvider(name="loginData")
public String[][] loginDataProvider() throws BiffException, IOException {
    data=loginUsingExcel();
    return data;

}

public String[][] loginUsingExcel() throws BiffException, IOException {
    
    FileInputStream excel=new FileInputStream("C:UsersMEDesktopFilename.xls");

    Workbook workbook=Workbook.getWorkbook(excel);
    Sheet sheet = workbook.getSheet(0);
    int rows = sheet.getRows();
    int columns = sheet.getColumns();
    
    String[][] testData=new String[rows-1][columns];
    for (int i = 1; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            testData[i-1][j]=sheet.getCell(j, i).getContents();
        }
    }
    return testData;
}
 

S.B's user avatar

S.B

11.4k7 gold badges21 silver badges42 bronze badges

answered Jan 16, 2022 at 13:41

Sabari Nathan's user avatar

Я хочу прочитать файл xml и использую jxl. Но я получаю сообщение об ошибке jxl.read.biff.BiffException: Unable to recognize OLE stream.

Когда я ищу в Интернете, все говорят, что вы должны сохранить как книгу Excel 97-2003. Но мой файл Excel — Excel 97-2003. Как я могу решить эту проблему?

import java.io.File; 
import java.io.IOException; 

import jxl.Cell; 
import jxl.CellType; 
import jxl.Sheet; 
import jxl.Workbook; 
import jxl.read.biff.BiffException; 

public class deneme { 

  private String inputFile; 

  public void setInputFile(String inputFile) { 
    this.inputFile = inputFile; 
  } 

  public void read() throws IOException  { 
    File inputWorkbook = new File(inputFile); 
    Workbook w; 
    try { 
      w = Workbook.getWorkbook(inputWorkbook); 
      // Get the first sheet 
      Sheet sheet = w.getSheet(0); 
      // Loop over first 10 column and lines 

      for (int j = 0; j < sheet.getColumns(); j++) { 
        for (int i = 0; i < sheet.getRows(); i++) { 
          Cell cell = sheet.getCell(j, i); 
          CellType type = cell.getType(); 
          if (type == CellType.LABEL) { 
            System.out.println("I got a label " 
                + cell.getContents()); 
          } 

          if (type == CellType.NUMBER) { 
            System.out.println("I got a number " 
                + cell.getContents()); 
          } 

        } 
      } 
    } catch (BiffException e) { 
      e.printStackTrace(); 
    } 
  } 

  public static void main(String[] args) throws IOException { 
      deneme test = new deneme(); 
      test.setInputFile("c:/data.xls"); 
      test.read(); 
  } 

}  

2 ответа

Просто сохраните снова, нажав «Сохранить как» и выберите «Книга Excel 97-2003». это работает для меня ….


3

Rohit Sinha
6 Янв 2017 в 15:18

Просто переименовать его в файл .xls не получится.

Вам нужно будет вручную перейти в «Сохранить как» -> «Книга Excel 97-2003» и сохранить ее.


0

Kripa Jayakumar
12 Фев 2015 в 00:17

Я хочу прочитать xml файл, и я использую jxl. Но я получаю ошибку jxl.read.biff.BiffException: Unable to recognize OLE stream.

Когда я ищу в Интернете, Everbody говорит, что вы должны сохранить как Excel 97-2003 Workbook. Но мой Excel файл Excel 97-2003. Как я могу это решить?

import java.io.File; 
import java.io.IOException; 

import jxl.Cell; 
import jxl.CellType; 
import jxl.Sheet; 
import jxl.Workbook; 
import jxl.read.biff.BiffException; 

public class deneme { 

  private String inputFile; 

  public void setInputFile(String inputFile) { 
    this.inputFile = inputFile; 
  } 

  public void read() throws IOException  { 
    File inputWorkbook = new File(inputFile); 
    Workbook w; 
    try { 
      w = Workbook.getWorkbook(inputWorkbook); 
      // Get the first sheet 
      Sheet sheet = w.getSheet(0); 
      // Loop over first 10 column and lines 

      for (int j = 0; j < sheet.getColumns(); j++) { 
        for (int i = 0; i < sheet.getRows(); i++) { 
          Cell cell = sheet.getCell(j, i); 
          CellType type = cell.getType(); 
          if (type == CellType.LABEL) { 
            System.out.println("I got a label " 
                + cell.getContents()); 
          } 

          if (type == CellType.NUMBER) { 
            System.out.println("I got a number " 
                + cell.getContents()); 
          } 

        } 
      } 
    } catch (BiffException e) { 
      e.printStackTrace(); 
    } 
  } 

  public static void main(String[] args) throws IOException { 
      deneme test = new deneme(); 
      test.setInputFile("c:/data.xls"); 
      test.read(); 
  } 

}  

31 июль 2014, в 12:00

Поделиться

Источник

2 ответа

Просто зайдите и сохраните снова, нажав «Сохранить как» и выберите «Excel 97-2003 WorkBook». это работает для меня….

Rohit Sinha
06 янв. 2017, в 09:54

Поделиться

Просто переименование его в файл.xls не работает.

Вам нужно будет вручную перейти в «Сохранить как → Excel 97-2003 Workbook» и сохранить его.

Kripa Jayakumar
11 фев. 2015, в 18:21

Поделиться

Ещё вопросы

  • 0Неустранимая ошибка PHP: класс ‘Vich UploaderBundle VichUploaderBundle’ не найден в / va r / app / current / app / AppKernel.php в строке 25
  • 0Передача или дамп из базы данных Azure MS SQL Server
  • 0Повторите видео в Open Cv
  • 0Получение суммы столбца с помощью селектора классов
  • 1MvcSiteMapProvider дает ноль счетчика ноль в MVC
  • 1Установка QGIS 3.2 в OSX — Python 2.7, существующий не позволит мне
  • 0Попытка передать переменную в URL в ссылке редактирования результатов шоу
  • 1Сравните данные в CSV и распечатайте изменения на основе поиска в словаре
  • 1Невозможно привести .SelectedItems из выпуска DataGrid
  • 1Asp.net Identity 2 Тип сущности User не является частью модели для текущего контекста
  • 0Как динамически изменить шаблон URL в angularjs из контроллера?
  • 1Как распечатать pdf через pdf.js в веб-форме ASP
  • 2Где хранить пароль / логин-путь в MariaDB (эквивалент для mysql-config-editor)?
  • 0Невозможно поделиться URL в твиттере с помощью строки запроса
  • 0Как сделать так, чтобы содержимое пользовательского модального окна углового материала реагировало как родительское модальное окно
  • 1Показывать информацию о версии только один раз при запуске приложения в Android App
  • 0Получение двух элементов jquery (jcarousel и accordion) для работы на одной странице
  • 1В Jasper сообщают, как создать отчет в формате pdf, используя подотчет для источника данных XML
  • 1Отсутствует ошибка манифеста при попытке получить ресурс через менеджер ресурсов
  • 0Как выбрать только один столбец при наведении на него в раскрывающемся меню JQuery?
  • 0Читаемая логика потока обещаний
  • 0Лицо шрифта в IE
  • 0MYSQL: выбрать только столбец с суммой == 0
  • 1Как мне не печатать узел, когда он пуст
  • 0Метод сохранения CRUD ссылается на неправильный URL
  • 1Является ли функция, объявленная в глобальной области видимости, закрытием? [Дубликат]
  • 0Как удалить дубликаты атрибутов из HTML без использования HTMLAgilityPack?
  • 1Вставка тройных кавычек внутри тройных кавычек в файле cson
  • 0Навигация по слайдеру кодирования
  • 1Десериализация Yahoo! Fantasy API проигрыватель JSON
  • 1Последовательный запуск команд Powershell в Python
  • 0клиент c ++ с сервером мониторинга php
  • 1Динамическая загрузка классов для нескольких версий Android
  • 0Как создать фильтр для каждой вкладки?
  • 0Php Phalcon с шаблоном Smarty
  • 1Проверка содержимого EditText, как только пользователь вводит данные
  • 1Нахождение числа, которое делится на все числа от 1 до 10 равномерно
  • 0Невозможно NG-Repeat массив из данных AngularJS (League of Legends)
  • 0Как разместить собственный объект класса в CCArray?
  • 1Объединять и переименовывать файлы на основе имени каталога с помощью Gulp
  • 1Как показать изображение (формат потока памяти) в отчете RDLC c #?
  • 0Как добавить строку таблицы с входным текстом внутри поля таблицы
  • 1Как правильно указать, что функция запускает событие в элементе Polymer?
  • 0AngularJs не загружает страницы при просмотре
  • 0Сравнение базы данных в хранимой процедуре
  • 0Проблемы с центрированием меню
  • 0почему мне не нужно переносить операторы блокировки / разблокировки при использовании условий ожидания qt?
  • 1Как установить адрес конечной точки веб-службы во время выполнения?
  • 0Управлять результатами, хранящимися в «обещании»
  • 0Использование базы данных MySQL из плагина Artifactory

Сообщество Overcoder

Я пытался подключить свою программу Java к файлу Excel. Я сделал до этого. Но он бросает это исключение

Невозможно распознать поток OLE

Пожалуйста, помогите мне завершить это.

import jxl.*;
import java.io.*;

public class excel
{
      public static void main(String[] args)throws Exception
      {

       File ex=new File("D:/worksps/test.xlsx");
       Workbook w= Workbook.getWorkbook(ex);
       Sheet s= w.getSheet(0);
       for(int i=0;i<s.getColumns();i++)
       {
         for(int j=0;j<s.getRows();j++)
         {
               Cell cell=s.getCell(i, j);
               System.out.println("     "+cell.getContents());
         }
         System.out.println("n");
       }
      }
}

1 ответы

JXL поддерживает листы Excel, созданные в Excecl 95/97 и 2000.

Читайте ниже на официальном сайте JXL — http://www.andykhan.com/jexcelapi/

Особенности

Читает данные из книг Excel 95, 97, 2000 Читает и записывает формулы (только Excel 97 и более поздние версии) Создает электронные таблицы в формате Excel 2000

Ваш лист Excel, кажется, создан после Excel 2000. Кажется, это проблема.

Если вы хотите читать файлы Excel, созданные после Excel 2000, вам следует использовать Apache POI. Это также простой в использовании API и поддержка MS Excel 97 до MS Excel 2008.

ответ дан 31 мар ’11, в 10:03

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

java
excel
ole

or задайте свой вопрос.

Guys,

I have developed a adapter EJB module to convert an excel file to xml. When I execute my module, I am getting an error «Unable to recognize OLE stream».

<b>jxl.read.biff.BiffExeption: Unable to recognize OLE stream.</b>

public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData)

throws ModuleException {

//Object obj = null;

//Message msg = null;

try {

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS, «Entered ModuleData method»);

obj = inputModuleData.getPrincipalData();

msg = (Message) obj;

// Write Audit message

amkey = new AuditMessageKey(msg.getMessageId(), AuditDirection.OUTBOUND);

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS,

«Custom adapter module MyProjectEJB called: Method ModuleData»);

XMLPayload xp = msg.getDocument();

if (xp != null) {

byte by[] = convert(xp.getContent());

xp.setContent(by);

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS,

«Custom adapter module MyProjectEJB called: Method convert executed»);

}

inputModuleData.setPrincipalData(msg);

} catch (Exception e) {

Audit.addAuditLogEntry(amkey, AuditLogStatus.ERROR, «Error in method ModuleData»);

}

return inputModuleData;

}

// Transform the excel data into xml so that the Adapter Engine can do the processing.

public byte[] convert(byte src[]) throws Exception {

String xmldata = «»;

try {

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS,

«src: » + src.length);

String err = «»;

ByteArrayInputStream f5 = new ByteArrayInputStream(src);

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS,

«ByteArrayInputStream f5 = new ByteArrayInputStream(src)- executed»);

<b>Workbook wb = Workbook.getWorkbook(f5);</b> —


> After this step I am getting that error.

Any ideas are greatly appreciated. I connect to unix server to get the file using FILE adapter/custom module.

Thanks,

Shanth

Guys,

I have developed a adapter EJB module to convert an excel file to xml. When I execute my module, I am getting an error «Unable to recognize OLE stream».

<b>jxl.read.biff.BiffExeption: Unable to recognize OLE stream.</b>

public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData)

throws ModuleException {

//Object obj = null;

//Message msg = null;

try {

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS, «Entered ModuleData method»);

obj = inputModuleData.getPrincipalData();

msg = (Message) obj;

// Write Audit message

amkey = new AuditMessageKey(msg.getMessageId(), AuditDirection.OUTBOUND);

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS,

«Custom adapter module MyProjectEJB called: Method ModuleData»);

XMLPayload xp = msg.getDocument();

if (xp != null) {

byte by[] = convert(xp.getContent());

xp.setContent(by);

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS,

«Custom adapter module MyProjectEJB called: Method convert executed»);

}

inputModuleData.setPrincipalData(msg);

} catch (Exception e) {

Audit.addAuditLogEntry(amkey, AuditLogStatus.ERROR, «Error in method ModuleData»);

}

return inputModuleData;

}

// Transform the excel data into xml so that the Adapter Engine can do the processing.

public byte[] convert(byte src[]) throws Exception {

String xmldata = «»;

try {

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS,

«src: » + src.length);

String err = «»;

ByteArrayInputStream f5 = new ByteArrayInputStream(src);

Audit.addAuditLogEntry(amkey, AuditLogStatus.SUCCESS,

«ByteArrayInputStream f5 = new ByteArrayInputStream(src)- executed»);

<b>Workbook wb = Workbook.getWorkbook(f5);</b> —


> After this step I am getting that error.

Any ideas are greatly appreciated. I connect to unix server to get the file using FILE adapter/custom module.

Thanks,

Shanth

I was trying to connect my Java program with an Excel file. I have did upto this. But it throws this excepion

Unable to recognize OLE stream

Please, help me to complete this.

import jxl.*;
import java.io.*;

public class excel
{
      public static void main(String[] args)throws Exception
      {

       File ex=new File("D:/worksps/test.xlsx");
       Workbook w= Workbook.getWorkbook(ex);
       Sheet s= w.getSheet(0);
       for(int i=0;i<s.getColumns();i++)
       {
         for(int j=0;j<s.getRows();j++)
         {
               Cell cell=s.getCell(i, j);
               System.out.println("     "+cell.getContents());
         }
         System.out.println("n");
       }
      }
}

bluish's user avatar

bluish

26.1k27 gold badges121 silver badges179 bronze badges

asked Mar 31, 2011 at 9:23

V I J E S H's user avatar

V I J E S HV I J E S H

7,43410 gold badges29 silver badges37 bronze badges

0

JXL supports Excel worksheets created in Excecl 95/97 and 2000 —

Read the below in the official JXL site — http://www.andykhan.com/jexcelapi/

Features

Reads data from Excel 95, 97, 2000
workbooks Reads and writes formulas
(Excel 97 and later only) Generates
spreadsheets in Excel 2000 format

Your excel sheet seems to be created after Excel 2000. That seems to be the problem.

If you want to read Excel files created after Excel 2000 then you should use Apache POI. It is also an easy to use API and supports MS Excel 97 to MS Excel 2008.

answered Mar 31, 2011 at 9:43

Pushkar's user avatar

3

Usually testers will save the excel document in current installed version but for data driven framework — excel file need to save in 97-2003 file format.

below is the code to call the excel sheets.

String[][] data=null;

@DataProvider(name="loginData")
public String[][] loginDataProvider() throws BiffException, IOException {
    data=loginUsingExcel();
    return data;

}

public String[][] loginUsingExcel() throws BiffException, IOException {
    
    FileInputStream excel=new FileInputStream("C:\Users\ME\Desktop\Filename.xls");

    Workbook workbook=Workbook.getWorkbook(excel);
    Sheet sheet = workbook.getSheet(0);
    int rows = sheet.getRows();
    int columns = sheet.getColumns();
    
    String[][] testData=new String[rows-1][columns];
    for (int i = 1; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            testData[i-1][j]=sheet.getCell(j, i).getContents();
        }
    }
    return testData;
}
 

S.B's user avatar

S.B

12.6k9 gold badges21 silver badges46 bronze badges

answered Jan 16, 2022 at 13:41

Sabari Nathan's user avatar

i am trying to get cell data from my .csv file but it gets error :
jxl.read.biff.BiffException: Unable to recognize OLE stream

I don’t understand how to solve this,please give me some solution
this code is for jxl api & is that api support to .csv?

Code for reference:

public void read() throws IOException, BiffException  {

    File inputWorkbook = new File(inputFile);

    try
    {
        w = Workbook.getWorkbook(inputWorkbook.getAbsoluteFile());
        // Get the first sheet
        Sheet sheet = w.getSheet(0);
        // Loop over first 10 column and lines

        for (row = 1; row < sheet.getRows(); row++) 
        {
            ReadExcelLotSizeEntity readExcelLotSizeEntity =new ReadExcelLotSizeEntity();

                cell = sheet.getCell(1,row);
                type= cell.getType();
                if (cell.getType() == CellType.LABEL)
                {

                    symbol=cell.getContents();
                    System.out.println(":::::::::::::::::"+symbol);
                    readExcelLotSizeEntity.setSymbol(symbol);
                }   

                int col=2;
                cell = sheet.getCell(col,row);
                while(!cell.getContents().equals("")||cell.getContents()!=null)
                {
                    System.out.println("||||||||||||||||"+cell.getContents());
                    cell=sheet.getCell(col,row);
                    col++;
                }
                lotSize= new Double(cell.getContents());
                readExcelLotSizeEntity.setLotSize(lotSize);
                readExcelLotSizeEntity.setCreateUserId(1L);
                readExcelLotSizeEntity.setCreateDtTm(new Date());
                readExcelLotSizeHome.persist(readExcelLotSizeEntity);
            }

    } catch (BiffException e) {
        e.printStackTrace();
    }

}

skaffman's user avatar

skaffman

398k96 gold badges816 silver badges768 bronze badges

asked Mar 21, 2012 at 5:27

user1263633's user avatar

I was also facing this problem earlier. I googled and read this post and many other posts that were asking for solution to this BiffException. I don’t have the exact solution but as I fixed my problem you can do it too, perhaps.

I was trying to read data from the Excel file saved in MS Office 2010 and I was getting this error. I saved the file as an Excel 2003-7 and then read it without any problem. It may the case that this problem occurs in Office 10 but not in Office 2003-7.

I hope this will work in your case.

Raul Rene's user avatar

Raul Rene

9,9719 gold badges53 silver badges75 bronze badges

answered Sep 5, 2012 at 5:01

Vinod Kumar Chauhan's user avatar

Saving File as «Excel 97-2003 Workbook» type solved my issue.

answered Oct 2, 2013 at 15:46

user2839342's user avatar

user2839342user2839342

2112 silver badges2 bronze badges

JXL library doesnot support .csv and .xslx formats, which is the format used by Excel-2010. hence, use Excel 97-2003 which is .xls foramatted and is supported by JXL library.
or else if you want to use excel-2010, use APACHE POI(XSSFWorkbooks) instead of JXL.
For using .csv format, google for CSVReader libraries.

OldTrain's user avatar

OldTrain

1,8601 gold badge25 silver badges22 bronze badges

answered Feb 20, 2015 at 15:17

prasad vsv's user avatar

prasad vsvprasad vsv

1,1388 silver badges10 bronze badges

1

JXL is a simple (and hence limited) API. If it says

Unable to recognize OLE stream

it is what it is. It doesn’t quite understand your Excel XLS file. Have confidence that the error is legitimate. This API only supports *.xls files; it doesn’t support, for example, *.csv or *.xlsx files. Obviously, having the file renamed to *.xls alone is not sufficient. It must be in Excel 97-2003 format too.

  • Copy all the cells from your *.csv or *.xlsx file.
  • Open MS Excel and paste the copied cells.
  • Save the file as MS Excel 97-2003 (*.xls) file.

This error will surely not appear again.

On the other hand, if you want to process other formats (xlsx, csv) directly, look for other tools like Apache POI.

answered Sep 16, 2018 at 17:43

VHS's user avatar

VHSVHS

9,4943 gold badges19 silver badges43 bronze badges

Save the Excel file type as Excel 97-2003 Worksheet and extension type as xls

answered Mar 15, 2018 at 11:18

Prashant1992's user avatar

Actually you are using different version of csv file .Please save it in the exact version.

For ex: we should save the excel sheet in word as 9

answered Mar 21, 2012 at 6:17

user1251551's user avatar

save the file as Excel 97-2003 and also change the file format from xlsx to xlx , in the code(in the file name)

answered Nov 29, 2014 at 18:56

Sreekanth's user avatar

SreekanthSreekanth

211 silver badge6 bronze badges

I was trying to read data from the Excel file saved in MS Office 2010 and I was getting this error. I saved the file as an Excel 2003-7 and then read it without any problem. It may the case that this problem occurs in Office 10 but not in Office 2003-7

answered May 4, 2016 at 13:19

Kishor Ambare's user avatar

1

Проблема, возникшая недавно, после экспорта Excle из системы, измените содержимое некоторых полей Excel, а затем импортируйте в Excel, читая Excel через jxl, исключая чтение файла jxl

jxl.read.biff.BiffException: Unable to recognize OLE stream    
    at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)    
    at jxl.read.biff.File.<init>(File.java:127)    
    at jxl.Workbook.getWorkbook(Workbook.java:221)    
    at jxl.Workbook.getWorkbook(Workbook.java:198)  

Это означает, что импортированный файл Excel не является стандартным OLE-файлом, распознаваемым jxl, но, похоже, он открывается в Excle, а затем я снова сохраняю этот Excel как Excel и обнаруживаю, что его тип сохранения по умолчанию — «веб-страница с одним файлом» (Excle может быть открыт с помощью EditPlus. Это файл веб-страницы), а затем измените тип безопасности на Microsoft Office Excel, сохраните импорт, и вы сможете импортировать его правильно.

Другая возможная причина: проблема версии Excel

Однако нет необходимости импортировать, сохраняя как.

1. Чтение в Excel основано на тексте.

2. Экспортируйте Excel, экспортируйте способом, который соответствует jxl

public void outPutExcel(List<InvoiceRequisitionSo> result,HttpServletResponse response ){
    OutputStream os = null;
    try{
        os = response.getOutputStream();
    }catch (IOException el){

    }
    response.reset();
    response.setHeader("Content-disposition", "attachment; filename=InvoiceRequisitionListToExcel.xls");
    response.setContentType("application/msexcel");
    WritableWorkbook wwb=null;
    WritableSheet ws=null;
    WritableCellFormat cellFormat = new WritableCellFormat();
    WritableCellFormat cellFormatContent = new WritableCellFormat();
    WritableFont font = new WritableFont (WritableFont.createFont (" "), 10, WritableFont.NO_BOLD);
         WritableFont font1 = new WritableFont (WritableFont.createFont (" "), 10, WritableFont.NO_BOLD);
    try{
       wwb = Workbook.createWorkbook(os);
               ws = wwb.createSheet («Заявка на счет в головном офисе», 0);
       font.setColour(Colour.WHITE);
       WritableCellFormat cellFormatContentt = new WritableCellFormat(font);
       font1.setColour(Colour.RED);
       WritableCellFormat cellFormatContentred = new WritableCellFormat(font1);
       ws.getSettings().setDefaultColumnWidth(18);
               // Установить формат ячейки
     cellFormat.setBackground(Colour.GRAY_25);
       cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
       cellFormatContent.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
       cellFormatContentt.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
       int i = 0;
       for (InvoiceRequisitionSo so : result) {
             ws.addCell(new Label(0,i,so.getInvoice(),cellFormatContentred ));
                             //Объединить ячейки
         ws.mergeCells(1, i , 2, i );
              ws.addCell(new Label(1, i, so.getEno(), cellFormatContent));
              i++;
      }
    }catch (Exception e){

    } finally{
            try {
                wwb.write();
                wwb.close();
                os.close();
            } catch (Exception e) {

            }
        }
}

  • Ошибка загрузки dll access
  • Ошибка загрузки boot при прошивке
  • Ошибка загрузки 4000 xiaomi темы как исправить
  • Ошибка загрузки boot rockchip
  • Ошибка загрузки 400 фогейм