1. Veerender Khanna
  2. PowerBuilder
  3. Tuesday, 29 August 2023 02:17 AM UTC

We are currently in the process of enhancing our systems, and as part of this effort, we are looking to upgrade our PowerBuilder version from 2017 to PB 2022. In this transition, one critical consideration involves our internal reports that rely on the Dw2xls for PowerBuilder component library.

With each upgrade, the necessity to repurchase the Dw2xls component library has been a notable aspect. In light of this, we are interested in identifying a native approach that enables the seamless export of DataWindow content to Excel, complete with formatting intact.

Please feel free to share your thoughts and suggestions. 

 

Who is viewing this page
Georgi Hristov Accepted Answer Pending Moderation
  1. Wednesday, 7 February 2024 22:25 PM UTC
  2. PowerBuilder
  3. # 1

Is this work with 64 bit pb2xls.dll ?

 
Comment
  1. Chris Pollach @Appeon
  2. Thursday, 8 February 2024 00:17 AM UTC
Hi Georgi;

Yes, they have a 64 bit edition ...

https://order.mycommerce.com/product?productid=301035456

HTH

Regards ... Chris

  1. Helpful
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Tuesday, 29 August 2023 15:48 PM UTC
  2. PowerBuilder
  3. # 2

Hi Veerender;

  A native DWO to Excel feature is currently listed on the PB roadmap for the next major release ...

https://www.appeon.com/developers/roadmap#upcoming

  BTW: PB 2022 R3 is not a major release. So this would be for PB 2024/2025 time frame.

Regards ... Chris

 

Comment
  1. mike S
  2. Thursday, 26 October 2023 20:55 PM UTC
Update: this feature has been removed from the roadmap
  1. Helpful 1
  1. Andreas Mykonios
  2. Friday, 27 October 2023 06:10 AM UTC
Hi Mike. I wonder why?

Andreas.
  1. Helpful
  1. John Fauss
  2. Friday, 27 October 2023 13:23 PM UTC
  1. Helpful 2
There are no comments made yet.
Veerender Khanna Accepted Answer Pending Moderation
  1. Tuesday, 29 August 2023 14:32 PM UTC
  2. PowerBuilder
  3. # 3

Hi Miguel,

Thanks for your feedback. I appreciate you taking the time to share your thoughts. I'll definitely share this with my tech team to try.

Thanks again for your help.

Best regards,
Veeren

Comment
  1. Miguel Leeuwe
  2. Tuesday, 29 August 2023 15:19 PM UTC
yw !
  1. Helpful
There are no comments made yet.
Miguel Leeuwe Accepted Answer Pending Moderation
  1. Tuesday, 29 August 2023 10:15 AM UTC
  2. PowerBuilder
  3. # 4

Hi,

We are on PB 2019 R3 and are still using dw2xls for pb 12.6.

The only thing we had to change, is mostly the declarations for External functions to use LONGPTR.

dw2xls_pb126.pbl(n_dwr_band).n_dwr_band:  Function Long addOverlappedObject(LongPtr inst, ref ST_RECT c) library "pb2xls"  Alias For "oo_addObject"
dw2xls_pb126.pbl(n_dwr_band).n_dwr_band:  Subroutine destroyOverlappedStorage(LongPtr inst) library "pb2xls" Alias For "oo_destroy"
dw2xls_pb126.pbl(n_dwr_band).n_dwr_band:  Subroutine destroyBandBackground(LongPtr inst) library "pb2xls" Alias For "bb_destroy"
dw2xls_pb126.pbl(n_dwr_band).n_dwr_band:  Subroutine initBandBackground(LongPtr inst, ref ST_RECT initMin, ref ST_RECT initMax) library "pb2xls"  Alias For "bb_init"
dw2xls_pb126.pbl(n_dwr_band).n_dwr_band:  Subroutine clearBandBackground(LongPtr inst) library "pb2xls"  Alias For "bb_clear"
dw2xls_pb126.pbl(n_dwr_band).n_dwr_band:  Subroutine addObjectToBand(LongPtr bandInst, LongPtr wsInst, long x1, long x2, long y1, long y2) library "pb2xls" Alias For "bb_addObject"
dw2xls_pb126.pbl(n_dwr_band).n_dwr_band:  private LongPtr iul_oostorage = 0
dw2xls_pb126.pbl(n_dwr_band).n_dwr_band:  protected LongPtr iul_bg = 0
dw2xls_pb126.pbl(n_dwr_colors).n_dwr_colors:  Function LongLong GetDC(LongPtr hWnd) library "user32.dll"
dw2xls_pb126.pbl(n_dwr_colors).n_dwr_colors:  Function long ReleaseDC(LongPtr hWnd, LongPtr hdcr) Library "USER32.DLL"
dw2xls_pb126.pbl(n_dwr_colors).n_dwr_colors:  Function long GetDeviceCaps(LongPtr DC, long Index ) library "gdi32.dll"
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setNumFormat(LongPtr f, readonly string as_format) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontName(LongPtr f, readonly string as_font) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontSize(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontItalic(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontUnderline(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontWeight(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setHAlign(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setVAlign(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setTextAlign(LongPtr f, readonly string value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setWrap(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFgColor(LongPtr f, ulong value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setBgColor(LongPtr f, ulong value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setBorderStyle(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontFamily(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontCharset(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontShadow(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setFontOutline(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine setRotation(LongPtr f, long value) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  Subroutine destroyFormat(LongPtr f) &
dw2xls_pb126.pbl(n_dwr_format).n_dwr_format:  LongPtr handle = 0
dw2xls_pb126.pbl(n_dwr_sub).n_dwr_sub:  Function LongPtr GetDC(LongPtr hw) Library "User32"
dw2xls_pb126.pbl(n_dwr_sub).n_dwr_sub:  Function uint ReleaseDC(LongPtr hw, LongPtr hDC) Library "User32"
dw2xls_pb126.pbl(n_dwr_sub).n_dwr_sub:  Function long GetDeviceCaps(LongPtr hDC, long iCapability) Library "Gdi32"
dw2xls_pb126.pbl(n_dwr_sub)constructor.0003:  LongPtr li_hDC
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  Function LongLong addWorksheet(LongPtr wb, readonly string as_sheetName) &
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  Function long save(LongPtr wb) &
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  Subroutine _destroy(LongPtr wb) &
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  Function ulong GetModuleFileNameA (LongPtr hinstModule, ref string lpszPath, ulong cchPath ) Library "KERNEL32.DLL" 
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  Function ulong GetModuleFileNameW (LongPtr hinstModule, ref string lpszPath, ulong cchPath ) Library "KERNEL32.DLL" 
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  Function boolean FreeLibrary (LongPtr hLibModule) Library "KERNEL32.DLL"
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  Function LongLong createFormat(LongPtr wb) &
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  Function ulong addFormat(LongPtr wb, LongPtr format) &
dw2xls_pb126.pbl(n_dwr_workbook).n_dwr_workbook:  LongPtr handle = 0
dw2xls_pb126.pbl(n_dwr_workbook).of_create.0008:  LongPtr hModule
dw2xls_pb126.pbl(n_dwr_workbook).of_getexedir.0005:  LongPtr appHandle
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long addCellDrawing(LongPtr ws, string path, long x1, long x2, long y1, long y2, long format, long unit) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long addCellDouble(LongPtr ws, double value, long x1, long x2, long y1, long y2, long format, long unit) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long addCellString(LongPtr ws, readonly string value, long x1, long x2, long y1, long y2, long format, long unit) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long addHBreak(LongPtr ws, long y, long unit) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long updateX(LongPtr ws, boolean commit_only) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long updateY(LongPtr ws, boolean merge_cells) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine beginBand(LongPtr ws) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setPrintGridLines(LongPtr ws, boolean value) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setScreenGridLines(LongPtr ws, boolean value) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long endBand(LongPtr ws, long units) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setAlign(LongPtr ws, double x, double y) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setUnitXCoef(LongPtr ws, long unit, double coef) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setUnitYCoef(LongPtr ws, long unit, double coef) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long getCellCount(LongPtr ws) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function long writeCells(LongPtr ws, long al_begin, long al_end, long millisecs, boolean merge) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setColWidth(LongPtr ws, long col, double width) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setRowHeight(LongPtr ws, long row, double height) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setOrientation(LongPtr ws, long orientation) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setHeader(LongPtr ws, readonly string value, double height) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setFooter(LongPtr ws, readonly string value, double height) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setMarginLeft(LongPtr ws, double value) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setMarginRight(LongPtr ws, double value) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setMarginTop(LongPtr ws, double value) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine setMarginBottom(LongPtr ws, double value) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine fillBandBackground(LongPtr ws, LongPtr bb, long format, long unit) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine addXPoint(LongPtr ws, long x, long unit) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine addXInterval(LongPtr ws, long x1, long x2, long unit) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function boolean hasImagesSupport(LongPtr ws) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine excel97_appendData(LongPtr ws, readonly blob buf, LongPtr len) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Subroutine excel97_appendHeaderData(LongPtr ws, readonly blob buf, LongPtr len) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function ulong excel97_getRowHeight(LongPtr ws, long al_row) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  Function ulong excel97_getColWidth(LongPtr ws, long al_col) &
dw2xls_pb126.pbl(n_dwr_worksheet).n_dwr_worksheet:  LongPtr handle = 0
dw2xls_pb126.pbl(n_xls_worksheet).n_xls_worksheet:  Function ulong GetModuleFileNameA (LongPtr hinstModule, ref string lpszPath, ulong cchPath ) Library "KERNEL32.DLL" 
dw2xls_pb126.pbl(n_xls_worksheet).n_xls_worksheet:  Function ulong GetModuleFileNameW (LongPtr hinstModule, ref string lpszPath, ulong cchPath ) Library "KERNEL32.DLL" 
dw2xls_pb126.pbl(n_xls_worksheet).n_xls_worksheet:  Function LongPtr LoadLibraryA (ref string lpLibFileName) Library "KERNEL32.DLL"
dw2xls_pb126.pbl(n_xls_worksheet).n_xls_worksheet:  Function LongPtr LoadLibraryW (ref string lpLibFileName) Library "KERNEL32.DLL"
dw2xls_pb126.pbl(n_xls_worksheet).n_xls_worksheet:  Function boolean FreeLibrary (ref LongPtr hLibModule) Library "KERNEL32.DLL"
dw2xls_pb126.pbl(n_xls_worksheet).of_getexedir.0005:  LongPtr appHandle
dw2xls_pb126.pbl(n_xls_worksheet)constructor.0007:  // LongPtr hModule
dw2xls_pb126.pbl(uo_dw2xls_service).uo_dw2xls_service:  Function boolean GetTextExtentPoint32A(LongPtr hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL"
dw2xls_pb126.pbl(uo_dw2xls_service).uo_dw2xls_service:  Function LongLong SelectObject(LongPtr hdc, LongPtr hWnd) Library "GDI32.DLL"
dw2xls_pb126.pbl(uo_dw2xls_service).uo_dw2xls_service:  Function LongLong GetDC(LongPtr hWnd) Library "USER32.DLL"
dw2xls_pb126.pbl(uo_dw2xls_service).uo_dw2xls_service:  Function long ReleaseDC(LongPtr hWnd, LongPtr hdcr) Library "USER32.DLL"
dw2xls_pb126.pbl(uo_dw2xls_service).f_gettextwidth.0042:  LongPtr lul_Hdc, lul_Handle, lul_hFont
dw2xls_pb126.pbl(uo_dw2xls_service).f_gettextsize.0034:  LongPtr lul_Hdc, lul_Handle, lul_hFont
dw2xls_pb126.pbl(uo_dw2xls_service).f_gettextheight.0042:  LongPtr lul_Hdc, lul_Handle, lul_hFont
dw2xls_pb126.pbl(uo_dwr_progressbar).uo_dwr_progressbar:  Function LongLong CreateWindowExA(ulong dwExStyle, string as_ClassName, long WindowName, ulong dwStyle, ulong a_X, ulong a_Y, ulong nWidth, ulong nHeight, LongPtr hWndParent, LongPtr hMenu, LongPtr hInstance, LongPtr lpParam) library "user32.dll"
dw2xls_pb126.pbl(uo_dwr_progressbar).uo_dwr_progressbar:  Function LongLong CreateWindowExW(ulong dwExStyle, string as_ClassName, long WindowName, ulong dwStyle, ulong a_X, ulong a_Y, ulong nWidth, ulong nHeight, LongPtr hWndParent, LongPtr hMenu, LongPtr hInstance, LongPtr lpParam) library "user32.dll"
dw2xls_pb126.pbl(uo_dwr_progressbar).uo_dwr_progressbar:  Function integer DestroyWindow(LongPtr hWnd2) library "user32.dll"
dw2xls_pb126.pbl(uo_dwr_progressbar).uo_dwr_progressbar:  LongPtr hhWnd
dw2xls_pb126.pbl(uo_dwr_progressbar)constructor.0004:  LongPtr hParent, hInstance

 

So, if you have the time, changing these in the dw2xls pbl, will avoid you to have to buy a new version.

regards,

MiguelL

 

Comment
  1. Sivaprakash BKR
  2. Monday, 30 October 2023 05:31 AM UTC
This reply from Desta support team about license may be useful.

Hello,

*********************************************************

There are no diffs between PB versions.

Regarding our license policy, you should have the license per each PB version you are writing/deploying your application with.

So if your app is written with PB 10 you should have the license for DW2xls for PB 10 and deploy with it,

if your app is written with PB 2017 you should have the license for DW2xls for PB 2017.



Best regards,

Desta Support Team.

*********************************************************

  1. Helpful 1
  1. Miguel Leeuwe
  2. Monday, 30 October 2023 10:44 AM UTC
That's interesting, because if what they say "There are no diffs between PB versions." why would I have to upgrade?

There's neither any notion of what their support has told you if you go to their license page: http://desta.com.ua/dw2xls/license.html

So that's a bit weird, I'll get in touch with my supervisors to see if they want to talk to their support or not.



Thanks!
  1. Helpful
There are no comments made yet.
appeon pb Accepted Answer Pending Moderation
  1. Tuesday, 29 August 2023 05:18 AM UTC
  2. PowerBuilder
  3. # 5

Appeon claims to have provided this feature for a long time in the next version cry

 
Comment
  1. Sivaprakash BKR
  2. Tuesday, 29 August 2023 05:59 AM UTC
Ha ha... Like saying 'TOMORROW NEVER COMES' ? I don't think so....
  1. Helpful
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.