ZCL_EXCEL_WORKSHEET:
- in method BIND_ALV optional parameter I_TABLE added so we can decide
if we want to have formated table in Excel or not
- in method BIND_TABLE optional parameter IV_DEFAULT_DESCR added to be
able to control which description you want to use as a table header.
ZCL_EXCEL_STYLE_NUMBER_FORMAT :
- GBP and PLN currency formats added
ZCL_EXCEL_TABLE:
- few built in table styles added
Added new class/method to wrap obsolete function GUID_CREATE and use replacement class SAP provides. Old function call still found in wrapper class commented out for use in older releases, which don't have the new methods from SAP yet ( 7.01 does not have it for example )
Replaced calls to function by calls to wrapper-method
Changed calculation of last date in month in ZDEMO_CALENDAR since it was calling an obsoleted function as well.
Added the pull request #350 "Gradient Fill -> writer + demo programs 2 &
34" manually
Fixed ZEXCEL_DEMO report, bug after fix#345
Excel common has a bug, right now I used a quick and really dirty
solution
Changes:
ZCL_EXCEL_WORKSHEET: New attributes to hold row-outline information
ZCL_EXCEL_WORKSHEET_ROWDIMENSI: Look at those row-outline information. Modified methods that refer to outlining
ZCL_EXCEL_WRITER_2007: Respect new outlining informatino by using the modified methods from rowdimensi, Also corrected an error that occurs if we have leading or trailing empty rows but information stored in rowdimensions
ZDEMO_EXCEL12: Modified Demoreport 12 to demonstrate new outlining method
Allow inheritance to support testing of modified classes w/o having to change the original or to allow customer-specific variations
Changed objects:
ZCL_EXCEL_READER_2007: Added try-catch block to allow reading excelsheets with textfields ( ignore textfields - just read the rest )
ZCL_EXCEL_READER_2007: Added support of reading hyperlinks
ZCL_EXCEL_WRITER_2007: Corrected method CREATE_XL_SHEET_RELS to not look at internal hyperlinks
ZCL_EXCEL: Allow inheritance to test changes on subobjects w/o changing original ( needed for issue 343 for class ZCL_EXCEL_WORKSHEET )
ZCL_EXCEL_WORKSHEET: Allow inheritance, Changed row-dimensions to hashtable, added tabletype for this, changed method GET_ROW_DIMENSION to use hashtable
ZCL_EXCEL_WRITER_XLSM: Allow inheritance
ZDEMO_EXCEL_OUTPUTOPT_INCL: Changed default to "Display", Allow using any writerclass that inherits from ZCL_EXCEL_WRITER_2007
ZDEMO_EXCEL37: Allow passthrough of .xlsm files as well. Allow using any reader or writerclass that inherits from the ZCL_EXCEL_READER_2007 or ZCL_EXCEL_WRITER_2007
ZDEMO_EXCEL41: Test inheritance - demo for inherited ZCL_EXCEL or ZCL_EXCEL_WORKSHEET
Let me start by saying we really love the ABAP2XLSX project. Compared to exporting CSV files and importing them to Excel, it makes transferring data from SAP systems to Excel and vice versa so much easier.
What we did not like so far was the optimization of column width, especially because of the way this is realized in the XLSX file format (why did they not just add an attribute "optimize column width = true"?). Anyway, ABAP2XLSX being an open source project, we decided to try to bring some progress to this feature.
We ended up rewriting the method CALCULATE_CELL_WIDTH of the class ZCL_EXCEL_WORKSHEET.
We added the following features:
a) Before, the calculation of the cell width in ABAP2XLSX did not take into account the fact that Excel uses a proportional font by default. Thus, columns with many "i"s ended up too wide, while columns containing many "W"s ended up not wide enough.
We now use the function module LOAD_FONT, contained in SAP package BC. Thus, it should be available in pretty much every SAP system that runs ABAP. LOAD_FONT returns an internal table containing the width of every letter known in a font. You can upload Excel's default font Calibri using transaction SM73. Make sure to upload all four files (standard, bold, italic, bold and italic) and to use the description "Calibri", i.e. exactly the name Excel displays for the font. If you want to use other fonts in your files created by ABAP2XLSX, you can of course upload other fonts as well.
We calculate the sum of the widths of all characters in a cell, and add some cell padding, similar to the way Excel does it. If the font is not available in your SAP system, we revert back to a logic similar to the old one.
As calling LOAD_FONT for every cell took several seconds when we tested with larger tables, we store the values read from the function in a hash table. Thus, we only have to call the function once for every combination of font name and font attributes used in your Excel file.
b) XLSX stores dates in a cryptic format. For dates, the current implementation calculates the width of the cryptic values, thus, the columns end up too narrow.
Fortunately, ABAP2XLSX already contains a method to transform the cryptic value into an ABAP date. We then use ABAP's WRITE statement to create a date in the format the user is preferring, and calculate the width of this formatted date.
c) ABAP2XLSX currently does not consider auto filters. Thus, a column may end up too narrow, not showing the complete header text.
We fixed this by adding a fixed value to the cell width if an auto filter is activated. We use a fixed value because the size of the auto filter button in Excel does not depend on the font size you use.
d) ABAP2XLSX only estimates the width of the characters. Excel adds a small fixed amount to the width of the characters to create some horizontal cell padding. We added cell padding as well, as this brought the cell width even closer to the values calculated by Excel.
e) ABAP2XLSX already uses ABAP's data type FLOAT to store the width of a cell. However, CALCULATE_CELL_WIDTH used data type I (integer) to calculate the cell width before. Changing the parameter type for the parameter EP_WIDTH from I to FLOAT, and adjusting the variable used by the calling method CALCULATE_COLUMN_WIDTHS in the same way, made the calculation even more precise.
Enhanced Demoreport 6 to demonstrate how this new method can be used in other circumstances then reading in an EXCEL-sheet
set to test #268: Changed unit-test to make use of the extended functionality in ZCX_EXCEL
git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@428 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
#243 : ' not allowed as first character in title of worksheet
#230 : pimp my code
also readded implementing code of interface printsettings since it seems to have been eradicated when removing the aliases
git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@399 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049