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

Практикум по тест-дизайну 2.0
онлайн, начало 20 cентября
Python для начинающих
онлайн, начало 25 сентября
Первый Онлайн ИНститут Тестировщиков
онлайн, начало 23 сентября
Тестирование REST API
онлайн, начало 23 сентября
Фотография

Apache poi - добавление новой страницы в существующий файл xlsx

java apache testing automated

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

#1 Yoooo

Yoooo

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

  • Members
  • Pip
  • 13 сообщений

Отправлено 18 Август 2019 - 19:42

Есть сценарий для тестирования страницы со списком товаров. 
В течении этого сценария данные с web страницы в виде двух списков List<String> с названием и ценой должны дважды передаваться в файл xlsx, каждый раз - на новый лист.
Проблема в том, что файл xlsx после второго вызова перезаписывается, то есть лист SmartsPopular исчезает, а вместо него появляется Smarts 3-6 K.

В чём здесь может быть ошибка?

 

public class Script

    @Test
    public void script3() throws IOException {
    openSmartphones();
    moreGoodsClick();
    moreGoodsClick();
 
    FileExcelCreating.main("SmartsPopular", goodsNamesListCreating, goodsPricesListCreating);
 
    moreGoodsClick();
    moreGoodsClick();
 
    FileExcelCreating.main("Smarts 3-6 K", goodsNamesListCreating, goodsPricesListCreating);
---------------------------------------------------------------------------------------------------------
public class FileExcelCreating
    public static void main(String sheetName, List<String> goodsNames, List<String> goodsPrices) throws IOException {
 
        Workbook wb = new XSSFWorkbook();
        Sheet sheet = wb.createSheet(sheetName);
 
        Row r0 = sheet.createRow(0);
        Cell c0 = r0.createCell(0);
        c0.setCellValue("Название");
        Cell c1 = r0.createCell(1);
        c1.setCellValue("Цена");
 
        Row a;
 
        List<Integer> goodsPricesInt = new ArrayList<>();
        for(String s : goodsPrices) goodsPricesInt.add(Integer.valueOf(s));
 

        for (int i = 0; i < goodsNames.size(); i++) {
            a = sheet.createRow(i+1);
            String name = goodsNames.get(i);
            a.createCell(0).setCellValue(name);
        }
 
        for (int j = 0; j < goodsPricesInt.size(); j++) {
            a = sheet.getRow(j+1);
            Integer price = goodsPricesInt.get(j);
            a.createCell(1).setCellValue(price);
        }
 
        sheet.setAutoFilter(CellRangeAddress.valueOf("A1:B" + (goodsPricesInt.size())));
 
        FileOutputStream outputStream = new FileOutputStream  ("/FilesTXT/Smartphones.xlsx");
 
        wb.write(outputStream);
        outputStream.close();
    }


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 621 сообщений


Отправлено 19 Август 2019 - 08:17

Чтобы у вас открылся файл на добавление в него чего-либо, его надо открывать так:

        InputStream inp = null;
        try {
            inp = new FileInputStream("/FilesTXT/Smartphones.xlsx");
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }            

        Workbook wb = null;
        try {
            wb = WorkbookFactory.create(inp);
        } catch (InvalidFormatException | EncryptedDocumentException | IOException ex) {
            ex.printStackTrace();
        }
				
	Sheet sheet = wb.createSheet(sheetName);
		
		
	/// тут делаете что надо
		
				
	// и в конце самом не забываем закрыть InputStream
        try {
            inp.close();
        }catch (IOException e){
            e.printStackTrace();
        }	

Взято отсюда: https://poi.apache.o...adWriteWorkbook


  • 1


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн




Темы с аналогичным тегами java, apache, testing, automated

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

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

Яндекс.Метрика
Реклама на портале