If row has a property set on it (for example "hidden" or a style), but it does not otherwise have any cells in it, the application might run into an infinite loop. The xml will look like this:
<sheetData>
<row r="1" spans="1:2" x14ac:dyDescent="0.35">
<c r="A1"><v>1</v></c>
<c r="B1"><v>2</v></c>
</row>
<row r="2" spans="1:2" s="1" customFormat="1" x14ac:dyDescent="0.35"/>
</sheetData>
The last row has formatting applied, so it is present as an element, but has no cells. This file (when the xml is not formatted) will cause an infinite loop on import.
Setting up a paper size to A1 and exporting the document actually sets the paperSize to 1.
This leads to inappropriate values when entering the Page Setup options later in Excel.
When calling SpreadExporter.CreateWorkbookExporter method and referencing Trial assemblies an exception is thrown: System.ArgumentException: 'An item with the same key has already been added.'
This behavior is observed both with the NuGet packages and DLLs.
It is not observed with Trial DLLs version 2020.3.1019
ArgumentException with clarification similar to "'\u001f', hexadecimal value 0x1F, is an invalid character." is thrown when trying to export document containing characters which are not supported in XML document - such as some control characters like 0x00, 0x1F, 0x1B, etc.
Such characters are described in the XML specification here: https://www.w3.org/TR/xml/#charsets.
using (var stream = File.OpenWrite("sample.xlsx")) using (var workbook = SpreadExporter.CreateWorkbookExporter(SpreadDocumentFormat.Xlsx, stream)) using (var worksheet = workbook.CreateWorksheetExporter("My sheet")) using (var row = worksheet.CreateRowExporter()) using (var cell = row.CreateCellExporter()) { cell.SetValue(string.Format("Error Value: {0} ", Encoding.ASCII.GetString(new byte[] { 8 }))); }
When setting a date in a cell using SetValue(DateTime), the value should be converted to its numerical representation before adding it to the XML. However, it is currently written as a string. This causes issues when opening the generated file with Google Sheets - the dates are not visible in the file. A customer also reported that this is causing issues when the file is opened with MS Excel in specific cultures, but we were unable to reproduce that locally. Workaround: Convert the DateTime value to a number before setting it to the cell: cell.SetValue(DateTime.Now.Date.ToOADate());
When a cell value contains commas or new lines, they are not escaped on export to CSV and single value is exported as multiple values. Workaround: Escape the value manually. For example, use the following extension method to set string cell values: internal static class CellExporterExtensions { public static void SetValue(this ICellExporter cell, string value, SpreadDocumentFormat format) { if (format == SpreadDocumentFormat.Csv) { if (value.Contains(",")) { // escape all quotes with double quotes value = value.Replace("\"", "\"\""); } // enclose all values within quotes value = string.Format("\"{0}\"", value); } cell.SetValue(value); } } Available in LIB version: 2017.1.403