Completed
Last Updated: 30 Mar 2017 14:21 by ADMIN
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
Completed
Last Updated: 13 Dec 2018 15:23 by ADMIN
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.
Although the escaped strings are not supported (see related 181318), the library could prevent the exception and export the document successfully by skipping such characters.
Workaround: remove such characters before the export. Check the following StackOverflow answer for some ideas on code for replacing the characters: http://stackoverflow.com/a/14323524/259206


Approved
Last Updated: 26 Apr 2018 15:29 by ADMIN
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());
Declined
Last Updated: 12 Dec 2018 09:21 by ADMIN

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.


Code to reproduce 
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 })));
}

Approved
Last Updated: 05 Oct 2016 11:08 by ADMIN
If you want to export a document with modified Normal style, you have to modify it and then set it to at least one cell in order to be exported. This maybe is caused by the fact that if the style is not used it is not exported.

Workaround: Export single cell in the row with this style applied to it:

using (ICellExporter cell = row.CreateCellExporter())
{
    cell.SetFormat(new SpreadCellFormat()
    {
          CellStyle = normalStyle
     });
}
Approved
Last Updated: 04 Oct 2016 10:04 by ADMIN
When exporting double values no value type is set to the cell. When a string value is exported the cell value type is set to Text. After setting string value the valueType is set to Text and when setting again value to double the type remains the same.

When exporting double values no value type is set to the cell. When a string value is exported the cell value type is set to Text. After setting string value the valueType is set to Text and when setting again value to double the type remains the same.

Workaround: Just set the value once and do not change it.