Skip to content
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

textWrap gives corrupted sheet #17

Closed
SHAESEN2 opened this issue Nov 25, 2019 · 4 comments
Closed

textWrap gives corrupted sheet #17

SHAESEN2 opened this issue Nov 25, 2019 · 4 comments

Comments

@SHAESEN2
Copy link
Contributor

Hey,

When I use wrapText=TRUE I obtain a corrupted file:

wb <- createWorkbook()

addWorksheet(wb, "Expenditure", gridLines = FALSE) 

writeData(wb, sheet = 1, USPersonalExpenditure, rowNames = TRUE)

bodyStyle <- createStyle(fontSize=10, border="TopBottomLeftRight", borderColour = "black" , wrapText=TRUE)
headerStyle <- createStyle(fontSize=14, border="TopBottomLeftRight", borderColour = "black", textDecoration="bold")

addStyle(wb, sheet = 1, bodyStyle, rows = 2:6, cols = 1:6, gridExpand = TRUE)
addStyle(wb, sheet = 1, headerStyle, rows = 1, cols = 1:6, gridExpand = TRUE)

setColWidths(wb, 1, cols=1, widths = 21) ## set column width for row names column

saveWorkbook(wb, "addStyleExample.xlsx", overwrite = TRUE)

I attached a file with and without text wrapping for your convenience.

addStyleExample_wrapF.xlsx

addStyleExample_wrapT.xlsx

@ycphs
Copy link
Owner

ycphs commented Nov 26, 2019

Could you please provide a functional example.
USPersonalExpenditure has no assigned values.

@SHAESEN2
Copy link
Contributor Author

USPersonalExpenditure <- data.frame(
  `1940` = c(22.2, 10.5, 3.53, 1.04, 0.341),
  `1945` = c(44.5, 15.5, 5.76, 1.98, 0.974),
  `1950` = c(59.6, 29, 9.71, 2.45, 1.8),
  `1955` = c(73.2, 36.5, 14, 3.4, 2.6),
  `1960` = c(86.8, 46.2, 21.1, 5.4, 3.64),
  stringsAsFactors = FALSE,
  check.names = FALSE)

@JoshuaSturm
Copy link
Contributor

I've been having the same issue. Excel has always been able to repair the file automatically, but it's become a nuisance, so I've been trying to fix it.

The error log pointed to /xl/styles.xml as the culprit. I renamed my corrupted xyz.xlsx to xyz.zip, opened the styles file, and found this.

Capture

In the center, there should be a space before "wrapText"; I believe this is what's causing the issue.

I'm trying to determine how that style is generated, and I'll submit a pull request if/when I find it.

@SHAESEN2
Copy link
Contributor Author

Hey JoshuaSturm,

I checked and tested your fix. It solved the issue.

Thank you for the help. Very much appreciated !!!

@ycphs ycphs closed this as completed in a85dfc3 Nov 27, 2019
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Sep 8, 2021
# 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants