Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / excel и java помогите разобраться / 9 сообщений из 9, страница 1 из 1
03.01.2014, 01:09:21
    #38517153
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
Господа, прошу помощи вашей.
По мере необходимости прошлось влазить в java и нужно разобраться с работой в excel
Установил я IntelliJ IDEA и создал проект.
код был взят отсюда
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
package excel_test;
import java.io.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; //New imports to read XLSX format
import org.apache.poi.xssf.usermodel.XSSFSheet; //New imports to read XLSX format     .

public class XLSX {
    public static void main(String[] args) throws Exception{
        //Read Excel document first
        FileInputStream input_document = new FileInputStream(new File("C:\\1.xlsx"));
        // convert it into a POI object
        XSSFWorkbook my_xlsx_workbook;
        my_xlsx_workbook = new XSSFWorkbook(input_document);
        // Read excel sheet that needs to be updated
        XSSFSheet my_worksheet = my_xlsx_workbook.getSheetAt(0);
        // declare a Cell object
        XSSFCell cell = null;
        // Access the cell first to update the value
        cell = my_worksheet.getRow(2).getCell(1);
        // Get current value and reduce 5 from it
        cell.setCellValue(cell.getNumericCellValue() - 100);
        //important to close InputStream
        input_document.close();
        //Open FileOutputStream to write updates
        FileOutputStream output_file =new FileOutputStream(new File("C:\\1.xlsx"));
        //write changes
        my_xlsx_workbook.write(output_file);
        //close the stream
        output_file.close();
    }
}


устанавливается по умолчанию пакет poi-ooxml-3.5-FINAL.jar
в статье говорится, что нужен 3.8, но если я его устанавливаю, то import требует 3,5.
= то, что выдает компилятор
"C:\Program Files\Java\jdk1.7.0_45\bin\java" -Didea.launcher.port=7537 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 12.1.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.7.0_45\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\jfxrt.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext\zipfs.jar;C:\Users\Server\IdeaProjects\excel\target\test-classes;C:\Users\Server\IdeaProjects\excel\poi-3.9-20121203.jar;C:\Users\Server\IdeaProjects\excel\poi-ooxml-3.5-FINAL.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 12.1.4\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain excel_test.XLSX
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
at excel_test.XLSX.main(XLSX.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 6 more

Process finished with exit code 1

вроде все должно работать, но файл не изменяется.
Объясните пожалуйста, кто знает.
...
Рейтинг: 0 / 0
03.01.2014, 06:29:52
    #38517173
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
...
Рейтинг: 0 / 0
03.01.2014, 12:24:06
    #38517229
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
добавил, ничего не изменилось (
...
Рейтинг: 0 / 0
03.01.2014, 12:26:42
    #38517232
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
Вернее начало просить библы дальше, попробую подобавлять все.
Вопрос: А почему он сам их не подтягивает? Все равно с нета все берет.
...
Рейтинг: 0 / 0
03.01.2014, 17:44:25
    #38517377
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
Kreol,

Автоматом он не сможет подтянуть, придется добавлять вручную.
Как вариант, можно импортировать "евоный" персональный POM-файл,
в котором уже явно прописаны все необходимые зависимости:

http://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/2.4.0/xmlbeans-2.4.0.pom
...
Рейтинг: 0 / 0
03.01.2014, 18:56:19
    #38517404
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
да, спасибо так и сделал, только теперь пытаюсь приплести selenium
по отдельности запуск браузера(правда только до момента вычисления количества элементов
Код: java
1.
driver.getElementIndex

и
Код: java
1.
driver.getTable

- не могу понять откуда взять.) и редактирование файла excel работают.
Буду очень признателен, Вам, за помощь.
код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
package excel_test;

import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;


public class XLSX {

    public static void main(String[] args) throws Exception{
    {
        //Read Excel document first
        FileInputStream input_document = new FileInputStream(new File("C:\\1.xlsx"));
        // convert it into a POI object
        XSSFWorkbook my_xlsx_workbook;
        my_xlsx_workbook = new XSSFWorkbook(OPCPackage.open(input_document));
        // Read excel sheet that needs to be updated
        XSSFSheet my_worksheet = my_xlsx_workbook.getSheetAt(0);
        // declare a Cell object
        XSSFCell cell = null;

        driver = new WebDriver();
        driver.set(new FirefoxDriver());
        driver.get().navigate().to("http://namami.org/PKstate.aspx");
        Select select = new Select(driver.get().findElement(By.xpath("//*[@id='DdlState']")));
        select.selectByVisibleText("Andhra Pradesh");
        Select select2 = new Select(driver.get().findElement(By.xpath("//*[@id='DdlDist']")));
        select2.selectByVisibleText("Hydrabad");
        driver.get().findElement(By.cssSelector("option[value=\" Hydrabad\"]")).click();
        //driver.close();

        int count;
        int i,y,z;
        count = driver.getElementIndex("//table[@id='Datagrid1']/tbody/tr[last()]");

        for (i = 0; i<count; i--)
        {
            z = i+1;
            for(y = 0; y<=6; y++)
            {
                //'locator =
                if (!(driver.isElementPresent(driver.getTable("Datagrid1." + i + "." + y))= true))
                {
                    cell = my_worksheet.getRow(z).getCell(y + 1);
                    cell.setCellValue(driver.getTable("Datagrid1." + i + "." + y));
                }
                else
                {
                    break;
                }
            }
        }
        input_document.close();
        //Open FileOutputStream to write updates
        FileOutputStream output_file =new FileOutputStream(new File("C:\\1.xlsx"));
        //write changes
        my_xlsx_workbook.write(output_file);
        //close the stream
        output_file.close();

    }
    }
}
 /*   public static void main(String[] args) throws Exception{

        //Read Excel document first
        FileInputStream input_document = new FileInputStream(new File("C:\\1.xlsx"));
        // convert it into a POI object
        XSSFWorkbook my_xlsx_workbook;
        my_xlsx_workbook = new XSSFWorkbook(OPCPackage.open(input_document));
        // Read excel sheet that needs to be updated
        XSSFSheet my_worksheet = my_xlsx_workbook.getSheetAt(0);
        // declare a Cell object
        XSSFCell cell = null;
        // Access the cell first to update the value
        cell = my_worksheet.getRow(2).getCell(1);
        // Get current value and reduce 5 from it
        cell.setCellValue(cell.getNumericCellValue() - 100);
        //important to close InputStream
        input_document.close();
        //Open FileOutputStream to write updates
        FileOutputStream output_file =new FileOutputStream(new File("C:\\1.xlsx"));
        //write changes
        my_xlsx_workbook.write(output_file);
        //close the stream
        output_file.close();

    }    */

...
Рейтинг: 0 / 0
04.01.2014, 12:38:30
    #38517599
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
Вот, так лучше
Код: java
1.
2.
3.
WebDriver driver = new FirefoxDriver(); пере объявил
count = driver.getElementIndex("//table[@id='Datagrid1']/tbody/tr[last()]");
if (!(driver.isElementPresent(driver.getTable("Datagrid1." + i + "." + y))= true))



Ошибки:
java: cannot find symbol
symbol: method getElementIndex(java.lang.String)
location: variable driver of type org.openqa.selenium.WebDriver

java: cannot find symbol
symbol: method getTable(java.lang.String)
location: variable driver of type org.openqa.selenium.WebDriver

isElementPresent тоже пишет Cannot resolve method
...
Рейтинг: 0 / 0
04.01.2014, 13:30:30
    #38517611
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
подсказали, что использую методы SeleniumRC
но совместить что-то не получается
Код: java
1.
2.
WebDriver driver = new FirefoxDriver();
        Selenium selenium = new WebDriverBackedSelenium(driver, "http://namami.org/PKstate.aspx");


как бы начинает работать, но потом selenium не имеет методов которые были в простом driver
...
Рейтинг: 0 / 0
04.01.2014, 19:15:39
    #38517721
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel и java помогите разобраться
Все разобрался,
f ((selenium.isElementPresent(selenium.getTable("Datagrid1." + i + "." + y))))

поменять на
// Grab the table
WebElement table = driver.findElement(By.id('Datagrid1'));

// Now get all the TR elements from the table
List<WebElement> allRows = table.findElements(By.tagName("tr"));

// And iterate over them, getting the cells
for (WebElement row : allRows) {
List<WebElement> cells = row.findElements(By.tagName("td"));
for (WebElement cell : cells) {
// And so on
}

}
ну и править напильником
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / excel и java помогите разобраться / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]