Interface with MS Excel#
In the new version 2023 a new CADINP interface for writing/reading data to/from an XLSX file is available.
Configure the workbook and worksheet#
To configure the workbook and worksheet, it is required to use predefined SOFiSTiK variables.
#XLS.NAME
#XLS.SHEET
LET#XLS.NAME "test.xlsx" $ define the XLSX file
LET#XLS.SHEET "Sheet1" $ define the worksheet name
Read data from an Excel file#
To import a cell value from the defined workbook and sheet, it is required to use the new CADINP function:
XLS.READ(<row>, <column>).
Below we will import the data from an Excel cell.
+PROG TEMPLATE
LET#XLS.NAME "test.xlsx" $ define the XLSX file
LET#XLS.SHEET "Sheet1" $ define the Sheet name
LET#A1 XLS.READ(1,5) $ read data from cell (row = 1, column = 5)
END
Write data to an Excel file#
To write data to an Excel file (XLSX, XLSM), it is required to use the new CADINP function:
XLS.WRITE(<row>, <column>, <value>)
Important
Writing data to an opened file is not possible because the Excel files are opening as read only.
An error may occur in following cases:
you may not have write permissions or
the file may be open by another application.
Below you will find a small example how to write data to a file “test.xlsx” and workbook “Sheet1”.
+PROG TEMPLATE
LET#XLS.NAME "test.xlsx" $ define the XLSX file
LET#XLS.SHEET "Sheet1" $ define the worksheet name
LET#RET XLS.WRITE(1,5,10) $ write value 10 to cell (row = 1, column = 5)
LET#RET XLS.WRITE(3,3,"test") $ write text "test" to cell (row = 3, column = 3)
LET#RET XLS.WRITE(3,6,3*3) $ write the result of an equation to cell (row = 3, column = 6)
END
The function XLS.WRITE requires always a return variable. In the example above, the return value will be stored into the variable #RET.
Type of data and error codes#
If you want to find out the type of the data that you are reading from an Excel file (XLSX). Then you may check the #XLS.IER variable value.
#XLS.IER variable value |
Description |
---|---|
|
No Error |
|
Data Type is Number |
|
Data Type is Text |
|
Error Unspecified |
|
Error File Not Found |
|
Error File In Use or Open Failed |
|
Error Sheet Not Found or Invalid Sheet Name |
|
Error Invalid Cell Address |
|
No Supported Data (Empty Cell - return 0 as default value to LET/STO variable) |
This information is very helpful in case you are looping through the Excel file.
Hint
Total number of rows and columns on a worksheet is limited to 1048576 rows by 16384 columns.
+PROG TEMPLATE
LET#XLS.NAME "test.xlsx" $ define the XLSX file
LET#XLS.SHEET "Sheet1" $ define the worksheet name
LOOP#i
LET#FOO XLS.READ(#i+1,1)
PRT#FOO
ENDLOOP #XLS.IER<3 $ loop until empty cell is reached
END