orbeon / orbeon-forms

Orbeon Forms is an open source web forms solution. It includes an XForms engine, the Form Builder web-based form editor, and the Form Runner runtime.
http://www.orbeon.com/
GNU Lesser General Public License v2.1
511 stars 220 forks source link

Excel file can't be opened in Excel when the language is set to German #6391

Closed avernet closed 1 week ago

avernet commented 1 week ago

The error reported by Excel is "Hinweis: Wir haben ein Problem bei einigen Inhalten in 'file.xlsx' erkannt. Sollen wir so viel wie möglich wiederherstellen? Wenn Sie der Quelle dieser Arbeitsmappe vertrauen, klicken Sie auf 'Ja'.". This translates to "Note: We have detected a problem with some content in 'Gewähr Eingabe (de).xlsx'. Should we try to recover as much as possible? If you trust the source of this workbook, click 'Yes'."

To reproduce, on macOS, in Settings, General, Language & Region, add German, and make it to the first language in the list. Open the Excel file attached to the first message in the thread linked below, Excel will report the error mentioned above.

+1 from customer

avernet commented 1 week ago

This is related to #5514. We mangle names that start with the characters c and r, both uppercase and lowercase, followed by one or more digits, possibly followed by other characters, because Excel considers these to be shortcuts. For example, I imagine that c01 could refer to the first column and r02 to the second row.

The customer file had a control named s001-something that caused the problem when Excel was in German. The same Excel file could be opened just fine with Excel in English or Excel in French. Yes, s001-something doesn't start with c or r, but with s. What's the problem with s? I imagine that s is a problem because in German "column" is "Spalte" and starts with s! Adding s to c and r solves the problem.

Possible next steps:

  1. Have a property for this.
  2. Mangle anything of the form [A-Z|a-z]+\d+.*

(1) would allow us to apply a fix more quickly once a problem is identified, while (2) would theoretically prevent such problems from occurring in the first place, at the cost of additional mangling. My preference is for (2). To be discussed.