1 Create a workbook
In Excel, a workbook is a collection of one or more spreadsheets in a single file. This is the top level object for creating new sheets, etc.
<xsql-script> <body> <set name='new_workbook'> <excel.Workbook /> </set> </body> </xsql-script>
var mXlsNewWorkbook = new Ax.ms.Excel("new_workbook.xls");
2 Create a sheet
A spreadsheet is an aplication for organization, analysis and storage of data in tabular form. Exists methods in XSQL script and server-side script which are used to create a sheet within an excel file.
<xsql-script> <body> <set name='wb'> <excel.Workbook /> </set> <set name="test_sheet"> <excel.Workbook.createSheet name='new_sheet'> <wb /> </excel.Workbook.createSheet> </set> </body> </xsql-script>
var mXlsWb = new Ax.ms.Excel("test.xls"); var mXlsNewSheet = wb.createSheet("new_sheet");
2.1 Create a sheet from a ResultSet
The available methods allows to create spreadsheets from ResultSet.
In server-side script it is possible to add ResultSet starting at given row and column.
addRows(ins startRow, int startCol, ResultSet rs)
<xsql-script> <body> <set name='wb'> <excel.Workbook /> </set> <set name="new_sheet"> <excel.Workbook.createSheet name='new_sheet'> <wb /> </excel.Workbook.createSheet> </set> <excel.Sheet.fromResultSet > <new_sheet/> <sql.toResultSet> <select first='10'> <columns> tabname, tabid </columns> <from table='systables' /> </select> </sql.toResultSet> </excel.Sheet.fromResultSet> </body> </xsql-script>
var mXlsWb = new Ax.ms.Excel("test.xls"); var mXlsNewSheet = mXlsWb.createSheet("Hoja_1"); var mRsSystables = Ax.db.executeQuery(` <select first='10'> <columns> tabname, tabid </columns> <from table='systables' /> </select> `); mXlsSheet.addRows(mRsSystables);
2.2 Create a sheet from rows
The available methods allows add arrays of data as a new row to the end of Sheet
<xsql-script> <body> <vtable name='v_music'> <column name='brand' type='string' /> <column name='model' type='string' /> <column name='color' type='string' /> <column name='price' type='integer' /> </vtable> <vtable.insert name='v_music'> <matrix> { "Mazda" , "3" , "Rojo" , "21900" }, { "Volkswagen" , "Golf" , "Azul" , "23000" }, { "Nissan" , "Sentra" , "Blanco" , "18000" }, { "KIA" , "Cerato" , "Gris" , "15600" }, </matrix> </vtable.insert> <set name='wb'> <excel.Workbook /> </set> <set name="new_sheet"> <excel.Workbook.createSheet name='new_sheet'> <wb /> </excel.Workbook.createSheet> </set> <excel.Sheet.fromResultSet > <new_sheet/> <vtable.toResultSet> <v_music /> </vtable.toResultSet> </excel.Sheet.fromResultSet> </body> </xsql-script>
var mXlsWorkbook = new Ax.ms.Excel("test.xls"); var mXlsSheet = mXlsWorkbook.createSheet("Hoja_1"); var mRowCars = [ [ "Mazda" , "3" , "Rojo" , "21900" ], [ "Volkswagen" , "Golf" , "Azul" , "23000" ], [ "Nissan" , "Sentra" , "Blanco" , "18000" ], [ "KIA" , "Cerato" , "Gris" , "15600" ] ]; mXlsSheet.addRows(mRowCars);
3 Using a formula
In this section is presented an example of managing Excel documents with a multiplication formula.
<xsql-script> <body> <!-- Create virtual table with matrix data--> <vtable name='v_numbers'> <column name='Col1' type='integer' /> </vtable> <vtable.insert name='v_numbers'> <matrix> { "3" }, { "4" }, </matrix> </vtable.insert> <!-- Create the workbook --> <set name='wb'> <excel.Workbook /> </set> <!-- Create the workbook sheet with name Hoja_1 --> <set name="sheet"> <excel.Workbook.createSheet name="Hoja_1"> <wb/> </excel.Workbook.createSheet> </set> <!-- Create a workbook sheet from ResultSet --> <excel.Sheet.fromResultSet > <sheet/> <!-- ResultSet to virtual table --> <vtable.toResultSet> <v_numbers /> </vtable.toResultSet> </excel.Sheet.fromResultSet> <set name="cell_form"> <excel.Sheet.createCell row="3" col="0"> <sheet/> </excel.Sheet.createCell> </set> <!-- set cell with Formula 1 --> <excel.Cell.setCellFormula> <cell_form/> <string>A2*A3</string> </excel.Cell.setCellFormula> </body> </xsql-script>
//Create the workbook var mXlsWorkbook = new Ax.ms.Excel(); //Create the workbook sheet with name Hoja_1 var mXlsSheet = mXlsWorkbook.createSheet("Hoja_1"); var m_ArrayValues = [ [3], [4] ]; mXlsSheet.getCell("A1").setCellValue("Col1"); mXlsSheet.addRows(m_ArrayValues); mXlsSheet.getCell("A4").setCellFormula("A2*A3");
4 Example
In this section is presented an example of managing Excel documents.
In this case a book is created and the spreadsheet is created from a resultset. The expected result is printed
<xsql-script> <body> <!-- Create the workbook --> <set name='test_workbook'> <excel.Workbook /> </set> <!-- Create the workbook sheet with name Hoja_1 --> <set name="new_sheet"> <excel.Workbook.createSheet name="Hoja_1"> <test_workbook/> </excel.Workbook.createSheet> </set> <!-- SELECT the first 5 rows of systable table and load them in a workbook --> <excel.Sheet.fromResultSet > <new_sheet/> <sql.toResultSet> <select first='5'> <columns> tabname, tabid, pagesize </columns> <from table='systables' /> </select> </sql.toResultSet> </excel.Sheet.fromResultSet> <!-- create a cell --> <set name="cell_form"> <excel.Sheet.createCell row="7" col="2"> <new_sheet/> </excel.Sheet.createCell> </set> <!-- set cell with Formula --> <excel.Cell.setCellFormula> <cell_form/> <string>C2+C3+C4+C5+C6</string> </excel.Cell.setCellFormula> <!-- Creating a temporary EXCEL file with the workbook data --> <excel.Workbook.write> <test_workbook /> <file name="test.xls" type="temp"/> </excel.Workbook.write> <!-- Prints the ResultSet --> <println> <!-- Load workbook into ResultSet --> <excel.Workbook.toResultSet start-header-row='1' start-column='A'> <test_workbook/> </excel.Workbook.toResultSet> </println> </body> </xsql-script>
+----------+-----+-------------------+
|tabname |tabid|pagesize |
+----------+-----+-------------------+
|systables |1 |2048 |
|syscolumns|2 |2048 |
|sysindices|3 |2048 |
|systabauth|4 |2048 |
|syscolauth|5 |2048 |
| | |10,240.000000000000|
+----------+-----+-------------------+
//Create the workbook var mXlsWorkbook = new Ax.ms.Excel("test.xls"); //Create the workbook sheet with name Hoja_1 var mXlsSheet = mXlsWorkbook.createSheet("Hoja_1"); mXlsSheet.getCell("A1").setCellValue('tabname'); mXlsSheet.getCell("B1").setCellValue('tabid'); mXlsSheet.getCell("C1").setCellValue('pagesize'); //Select the first 5 rows of systable table and load them in a sheet var mRsSystables = Ax.db.executeQuery(` <select first='5'> <columns> tabname, tabid, pagesize </columns> <from table='systables' /> </select> `); mXlsSheet.addRows(mRsSystables); mXlsSheet.getCell("C7").setCellFormula("C2+C3+C4+C5+C6"); //Prints the ResultSet let mRsResult = mXlsSheet.toResultSet(); console.log(mRsResult);
+-------+----------+-------+--------+
Hoja_1
+-------+----------+-------+--------+
|<null> |<null> |<null> |<null> |
|Row |A |B |C |
|integer|char(10) |char(5)|char(8) |
+-------+----------+-------+--------+
|1 |tabname |tabid |pagesize|
|2 |systables |1 |2,048 |
|3 |syscolumns|2 |2,048 |
|4 |sysindices|3 |2,048 |
|5 |systabauth|4 |2,048 |
|6 |syscolauth|5 |2,048 |
|7 | | |10,240 |
+-------+----------+-------+--------+