Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заставить работать этот код, Вылетает ошибка 
V
    Опции темы
Lepus007
Дата 6.9.2015, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.9.2015

Репутация: нет
Всего: нет



Здравствуйте, помогите разобраться с ошибкой. Это первая моя программа . Сильно не ругайтесь.
Программа из текстового документа получает ссылки парсит веб страницу. если попадаются нужные строки она их сохраняет в ексель документ. Все идет хорошо до 9-вятой ссылки потом программа выкидует ошибку
Exception in thread "main" java.lang.IllegalArgumentException: The maximum length of cell contents (text) is 32,767 characters
at org.apache.poi.hssf.usermodel.HSSFCell.setCellValue(HSSFCell.java:552)
at org.apache.poi.hssf.usermodel.HSSFCell.setCellValue(HSSFCell.java:527)

Подскажите что не так голову уже сломал, не могу понять в чем проблема.

Подумал что ексель документ сразу не записывается, переполняется книга и вылетает ошибка.
Переделал чтоб данные сохранялись в блокнот, таже проблема на 9-вятой ссылки выпадает ошибка.
Код

import java.io.BufferedReader;
import java.io.File;
 
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
 
import java.io.FileOutputStream;
import java.io.IOException;
 
import java.io.RandomAccessFile;
 
 
 
public class App12 {
    
public static void main(String[] args) throws FileNotFoundException, IOException   {
    
        String line; 
        String opisanieOFF = "</div>";//
        String opisanie = "\"b-content__body b-user-content\"";//
        String price1 = "\"b-product__price\"";//
        String roa1;
        String roa2;
        String stroka_kateg = "pix123 ";
        String price_start = "price\">";
        String price_stop = "</p>";
        String foto_ON = "b-centered-image b-product__image";
        String foto_start = "href=\"";
        String foto_stop = "jpg\"";
        String jpg = "jpg";
 
        int ZapOpisanie = 0;//
        int ind = 0;
        int whil = 0;//
        int result = 0;
        int ss = 0;
        int row1 = 0;
        int cell1 = 0;
        int start = 0;
        int stop = 0;
 
        
        ArrayList<String> opisArrai = new ArrayList<String>();            
        StringBuilder builder = new StringBuilder();
        
       
        Workbook wb = new  HSSFWorkbook();
        Sheet sheet0 = wb.createSheet("Лист_1");        
        FileOutputStream fos = new FileOutputStream("C:/spisok.XLS ");
        //Row row = sheet0.createRow(row1);
 
        BufferedReader reader1 = new BufferedReader(new FileReader("C:\\Users\\Nout\\Desktop\\xxx.txt"));
        String line1;
        List<String> lines = new ArrayList<String>();
while ((line1 = reader1.readLine()) != null) {
            lines.add(line1);
            Row row = sheet0.createRow(row1);
           // System.out.println(line);
          boolean isContain4 = line1.contains(stroka_kateg);
                if (isContain4 == true){
                  System.out.println(line1);
                  cell1 = 0;                    
                    Cell cell = row.createCell(cell1);
                    cell.setCellValue(line1); 
                    row1++;
                }
                else
                {
          BufferedReader reader = null;
       // try {
            URL site = new URL(line1);
            reader = new BufferedReader(new InputStreamReader(site.openStream()));
            while ((line = reader.readLine()) != null) {
        
        
 
            
 
        
                boolean isContain3 = line.contains(opisanieOFF);
                if (isContain3 == true){
                  ZapOpisanie = 0;
                 // System.out.println(line);
                }
                  
                if (ZapOpisanie == 1){                   
                    
                    opisArrai.add(line);
                    ind++;                
 
                }
                boolean isContain5 = line.contains(opisanie);
                if (isContain5 == true){
                  ZapOpisanie = 1;
                 // System.out.println(line);
                }
                if(ind != 0 & line.contains(opisanieOFF )){
                    
                    builder.append(opisArrai);
                    roa1 = String.valueOf(builder);
                   // System.out.println(roa1);               
                    
                    cell1 = 2;                    
                    Cell cell = row.createCell(cell1);
                    cell.setCellValue(roa1);
                    roa1 = null;                    
                    row1++;
                    ind = 0;
                    
                   
                }
 
 
             boolean isContain1 = line.contains(price1);
                if (isContain1 == true){ 
                    start = line.indexOf( price_start);                    
                    stop = line.indexOf( price_stop,start);                  
                    roa1 = String.valueOf(line.substring(start, stop));
                   // System.out.println(roa1 );
                    
                    cell1 = 1;                    
                    Cell cell = row.createCell(cell1);
                    cell.setCellValue(roa1);
                    roa1 = null;
                    
                    //row1++;
                   
                } 
 
  
              boolean isContain2 = line.contains(foto_ON);
                if (isContain2 == true){
                    start = line.indexOf( foto_start);                    
                    stop = line.indexOf( foto_stop,start);                  
                    roa1 = String.valueOf(line.substring(start, stop));
                    //System.out.println(line );
                     roa1 = roa1.concat(jpg);
                    // System.out.println(roa1 );
                    cell1 = 5;                    
                    Cell cell = row.createCell(cell1);
                    cell.setCellValue(roa1);
                    roa1 = null;
                    
                }    
                
 
                
                
               
                  
                  
                
                
        
                
            
}reader.close();

whil++;
System.out.println(whil);
}
                
}reader1.close();
             
               wb.write(fos);
               fos.close();
 
}
 
}


Чтобы программа заработала нужно создать текстовый документ и указать путь к нему вот здесь
Код


BufferedReader reader1 = new BufferedReader(new FileReader("C:\\Users\\Nout\\Desktop\\xxx.txt"));


и в кинуть туда вот эти ссылки
Код

http://top-store.in.ua/p78484634-schetka-metla-fanatuk.html
http://top-store.in.ua/p78484635-sch...a-fanatik.html
http://top-store.in.ua/p78484636-sch...a-fanatik.html
http://top-store.in.ua/p78484638-sch...a-fanatik.html
http://top-store.in.ua/p78484639-sch...a-fanatik.html
http://top-store.in.ua/p78484641-sch...etla-push.html
http://top-store.in.ua/p78484642-sch...a-fanatik.html
http://top-store.in.ua/p78484644-sch...a-fanatik.html
http://top-store.in.ua/p78484645-sch...-uglovaya.html
http://top-store.in.ua/p78484647-sch...a-fanatik.html
http://top-store.in.ua/p78484648-sch...-uglovaya.html
http://top-store.in.ua/p78484649-met...ka-angled.html

PM MAIL   Вверх
Samotnik
Дата 6.9.2015, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Lepus007 @  6.9.2015,  19:09 Найти цитируемый пост)
и в кинуть туда вот эти ссылки

Отредактируй файл, что бы без троеточие был

Добавлено через 12 минут и 16 секунд
Lepus007, а какие версии poi используешь? У меня 3.9 выдает ошибку
Цитата

Error:(50, 38) java: incompatible types: org.apache.poi.hssf.usermodel.HSSFSheet cannot be converted to org.apache.poi.ss.usermodel.Sheet

PM MAIL   Вверх
Lepus007
Дата 6.9.2015, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.9.2015

Репутация: нет
Всего: нет



PM MAIL   Вверх
Lepus007
Дата 6.9.2015, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.9.2015

Репутация: нет
Всего: нет



Закомментировал вот эту строку 
Код

opisArrai.add(line);  

Программа заработала .   Я так понимаю происходит переполнения массива.  Как можно обнулить удалить массив???  Как обойти этот баг?
PM MAIL   Вверх
Lepus007
Дата 6.9.2015, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.9.2015

Репутация: нет
Всего: нет



opisArrai.clear();   продлил жизнь всего лишь до 37 ссылок. 
37 ссылок прошел и вылетела та же самая ошибка.
PM MAIL   Вверх
r00tGER
Дата 7.9.2015, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.5.2009
Где: Russia

Репутация: нет
Всего: нет



Ну, написано же:
Цитата

   The maximum length of cell contents (text) is 32,767 characters
   

Значит в ячейку пытается попасть больше 32767 символов.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL WWW   Вверх
Lepus007
Дата 7.9.2015, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.9.2015

Репутация: нет
Всего: нет



Цитата(r00tGER @  7.9.2015,  09:40 Найти цитируемый пост)
Значит в ячейку пытается попасть больше 32767 символов.

как это обойти????  Может есть какие-то другие массивы?  Так много символов лезит в ячейку не сразу. они накапливаются в ячейке в ходе работы программы нужно после каждого цикла обнулять . Или подскажите варианты?????
PM MAIL   Вверх
Lepus007
Дата 7.9.2015, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.9.2015

Репутация: нет
Всего: нет



ребятки все заработало. тема закрыта. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1152 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.