-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
saveWorkbook() always returns TRUE #71
Comments
Thank you for your input. It would definitely make sense to have a return value. I thought of two possible ways:
What's your opinion? |
I would say it all depends on the "API level" of the saveWorkbook() routine in your mind. If it is, as I view it from here, a rather low-level API call, then the behaviour I described would be what would be called for. It's annoying for low-level calls which return a success status to decide to emit an error message which might not be suitable: let the caller decide what to do, perhaps there is a contigency plan to retry saving with an alternate name, for instance. In that case (low-level routine made available to users), all high-level API calls which rely on saveWorkbook() must be taught to handle the error status accordingly. Factorizing the exception generation at the lowest level was precisely what I was thinking about when I suggested adding this extra parameter... If it is a user-visible front API, then yes, a detailed user message describing the problem is probably called for because the user would expect the routine to succeed, so it would be an exception if it does not fulfill its contract. Then internal calls you may be making to saveWorkbook() do not need to change. It's a design decision. If it were my code, I would do what I initially suggested, because it's cleaner and more flexible that way. |
could you please check out the new pull request: #93 |
added feature returnValue for saveWorkbokk #71
# development openxlsx 4.2.4 ## Fixes * `Write.xlsx()` now successfully passes `withFilter` ([#151](ycphs/openxlsx#151)) * code clean up PR [#168](ycphs/openxlsx#168) * removal of unused variables PR [#168](ycphs/openxlsx#168) ## New features * adds `buildWorkbook()` to generate a `Workbook` object from a (named) list or a data.frame ([#192](ycphs/openxlsx#192), [#187](ycphs/openxlsx#187)) * this is now recommended rather than the `write.xlsx(x, file) ; wb <- read.xlsx(file)` functionality before * `write.xlsx()` is now a wrapper for `wb <- buildWorkbook(x); saveWorkbook(x, file)` * parameter checking from `write.xlsx()` >> `buildWorkbook()` are now held off until passed to `writeData()`, `writeDataTable()`, etc * `row.names` is now deprecated for `writeData()` and `writeDataTable()`; please use `rowNames` instead * `read.xlsx()` now checks for the file extension `.xlsx`; previously it would throw an error when the file was `.xls` or `.xlm` files * memory allocation improvements * global options added for `minWidth` and `maxWidth` * `write.xlsx()` >> `buildWorkbook()` can now handle `colWidths` passed as either a single element or a `list()` * Added ability to change positioning of summary columns and rows. * These can be set with the `summaryCol` and `summaryRow` arguments in `pageSetup()`. * `activeSheet` allows to set and get the active (displayed) sheet of a worbook. * Adds new global options for workbook formatting ([#165](ycphs/openxlsx#165); see `?op.openxlsx`) # openxlsx 4.2.3 ## New Features * Most of functions in openxlsx now support non-ASCII arguments better. More specifically, we can use non-ASCII strings as names or contents for `createNamedRegion()` ([#103](ycphs/openxlsx#103)), `writeComment()`, `writeData()`, `writeDataTable()` and `writeFormula()`. In addition, openxlsx now reads comments and region names that contain non-ASCII strings correctly on Windows. Thanks to @shrektan for the PR [#118](ycphs/openxlsx#118). * `setColWidths()` now supports zero-length `cols`, which is convinient when `cols` is dynamically provided [#128](ycphs/openxlsx#128). Thanks to @shrektan for the feature request and the PR. ## Fixes for Check issues * Fix to pass the tests for link-time optimization type mismatches * Fix to pass the checks of native code (C/C++) based on static code analysis ## Bug Fixes * Grouping columns after setting widths no longer throws an error ([#100](ycphs/openxlsx#100)) * Fix inability to save workbook more than once ([#106](ycphs/openxlsx#106)) * Fix `loadWorkbook()` sometimes importing incorrect column attributes # openxlsx 4.2.2 ## New Features * Added features for `conditionalFormatting` to support also 'contains not', 'begins with' and 'ends with' * Added return value for `saveWorkbook()` the default value for `returnValue` is `FALSE` ([#71](ycphs/openxlsx#71)) * Added Tests for new parameter of `saveWorkbook()` ## Bug Fixes * Solved CRAN check errors based on the change disussed in [PR#17277](https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17277) # openxlsx 4.2.0 ## New Features * Added `groupColumns()`, `groupRows()`, `ungroupColumns()`, and `ungroupRows()` to group/ugroup columns/rows ([#32](ycphs/openxlsx#32)) ## Bug Fixes * Allow xml-sensitve characters in sheetnames ([#78](ycphs/openxlsx#78)) ## Internal * Updated roxygen2 to 7.1.1 # openxlsx 4.1.5.1 ## Bug Fixes * fixed issue [#68](ycphs/openxlsx#68]) # openxlsx 4.1.5 ## New Features * Add functions to get and set the creator of the xlsx file * add function to set the name of the user who last modified the xlsx file ## Bug Fixes * Fixed NEWS hyperlink * Fixed writing of mixed EST/EDT datetimes * Added description for `writeFormula()` to use only english function names * Fixed validateSheet for special characters ## Internal * applied the tidyverse-style to the package `styler::style_pkg()` * include tests for `cloneWorksheet` # openxlsx 4.1.4 ## New Features * Added `getCellRefs()` as function. [#7](ycphs/openxlsx#7) * Added parameter for customizing na.strings ## Bug Fixes * Use `zip::zipr()` instead of `zip::zip()`. * Keep correct visibility option for loadWorkbook. [#12](ycphs/openxlsx#12]) * Add space surrounding "wrapText" [#17](ycphs/openxlsx#17) * Corrected Percentage, Accounting, Comma, Currency class on column level * update to rogygen2 7.0.0 # openxlsx 4.1.3 ## New Features * Added a `NEWS.md` file to track changes to the package. * Added `pkgdown` to create site. ## Bug Fixes * Return values for cpp changed to R_NilValue for r-devel tests * Added empty lines at the end of files # openxlsx 4.1.2 * Changed maintainer # openxlsx 4.1.1 ## New Features * `sep.names` allows choose other separator than '.' for variable names with a blank inside * Improve handling of non-region names in `getNamedRegions` and add related test
The saveWorkbook() routine always returns TRUE. Its return status is not documented, and rightfully so since it is constant!
However, on Windows platforms (precisely where openxlsx is likely to be used....), if you happen to have the targeted file opened in Excel, the write operation will fail!!
It would be useful for saveWorkbook() to at least return a boolean "success status" and yield FALSE when saving fails. Another option would be to add an argument (FALSE by default, to not overcomplicate the logic for those who do not care much) to trigger an exception when writing fails.
The text was updated successfully, but these errors were encountered: