Exporting Excel file with POI
Here is a example for exporting the content of a excel file to txt file. The values that are exported are calculated/evaluated, so when a concatenation value like '=A1&B1' is used for a cell it will export the evaluated text.In case the are references to excel files with data in it like [testdata.xls]testdata'!$B$3 it will also be used for evaluation. For this Apache POI - the Java API for Microsoft Documents is used to open the files and read its values.
The test data
Suppose we creating a test script for logging in to an application. The data will be like username and pass word, the Excel sheet look like this:A B name value username maikel password secretSafe the file as 'data.xls' First we set up simple testcase which will start the application and login. The content of the Excelsheet:
A B C D action field data toExport click login click(login; ) type user maikel type(user;maikel) type pass secret type(pass;secret) click login click(login; ) validate message logged in validat(message;logged in)Set the worksheet name to 'Testcase' so that we can refer to it later. Safe the file as 'ftg_1.xls'
Note that:
-The value of C3 is a reference to the data.xls!B2
-The value of C4 is a reference to the data.xls!B3
-The value of D2 is a concatenation of A2, B2 and C2 What can do is to extract the values from column D and put them in a text file. After setting the example.properties file we start the export by typing in the command line:
java MainThe command line output will be looking like this:
Start search in directory:./test/ExcelSheet with prefix filter:ftg_ >>Processing file:ftg_1.xls >>Skipping file:testdata.xls >>StartExport file=ftg_1.xls >>Outputtext: click(login; ) type(user;maikel) type(pass;secret) >>Finished searchingThe output file './TestOutput/ftg_1.txt' is created and contains only the values of third column D.
PART 2 Java implementation
As mentioned poi is used for reading the excel file. The main function is opening the file and reading column D, store it in a string buffer. And write is to the out put file:private static void exportFile(String filename) { System.out.println( ">>StartExport file=" + filename); HSSFWorkbook wb = openSample(filename); System.out.println(">>numer of sheets=" + wb.getNumberOfSheets()); String searchSheet=excelProps.getProperty("sheetname", "Testcase"); HSSFSheet s = wb.getSheet(searchSheet); if (s==null){ System.out.println(">>Not found searchSheet name:" + searchSheet); return; } int lastrownum=s.getLastRowNum(); System.out.println( ">>Last rownumber=" + lastrownum); HSSFRow row = null; Cell cell = null; StringBuffer sb=new StringBuffer(); for (int i=0;i<lastrownum;i++){ row = s.getRow(i); if (row!=null){ cell = row.getCell(Integer.parseInt(excelProps.getProperty("colomnnumber", "3"))); if (cell!=null){ try{ sb.append(cell.getStringCellValue()+"\n"); } catch (RuntimeException e){ sb.append( "#Poi Extract Excel error: "+ e.getMessage()+" in row=" + (i +1) +"\n"); } } } } // //Echo to standard output // System.out.println(">>Outputtext:"+sb.toString()); }donwload Main.java
Geen opmerkingen:
Een reactie posten