The data validation is working. However, the text can't be localized by MS Excel with installed non-English language pack after import/export with SpreadProcessing. The problem is caused by an interpretation of the data validation rule as a text instead of as a formula.
Xlsx documents with global print area defined cannot be imported. Message box "The name that you entered is not valid." is shown and internally SpreadsheetNameException is thrown. By default, print areas are defined in the xlsx files for specific spreadsheet: <definedName name="_xlnm.Print_Area" localSheetId="0">Sheet1!$A$1</definedName> but this one is without localSheetId property specified. MS Excel can import such document and even preserve the area, but do not respect it and doesn't have UI to clear it. By OOXML specification, this attribute is optional: <xsd:attribute name="localSheetId" type="xsd:unsignedInt" use="optional"/> Workaround 1 (includes processing the document with MS Excel): - Open the document in MS Excel - Choose Formulas -> Defined names -> Named Manager - Choose Filter -> Names with errors - Find all Print_Area defined names and delete them - Save the document Workaround 2: - Delete all print areas with OpenXML SDK Available in LIB version: 2017.1.213
When there is a defined name referring many cells with long values, the Value of the defined name is string which does not contains the values of all the referred cells and ends with "...".
When importing and exporting xlsx document with email address hyperlink the exported document shows invalid document message when opened in Excel: "We found a problem with some content in 'file.xlsx'. Do you want us to try to recover as much as we can? If you trust the source of thes workbook, click Yes.". The document can be only partially recovered and information is lost.
When printing or exporting to PDF, the left border of A1 cell is not printed/rendered.
When there is some long number value in merged cell and this cell is autofit, then in Excel the cell is visualized with "#####" because the column width is not enough. Workaround: As a workaround in some scenarios it is possible to call Merge method after AutoFitWidth method in order get the correct column width.
When the column width is not an integer number, but a decimal fraction one, the width which is exported is not calculated correctly. For example, if there is a cell with some text and its column's width is autofit, it's exported with different actual width. In addition, if the exported xlsx file is imported back in the Spreadsheet, the column width is a bit different from the one which was exported (only for the first export-import roundtrip).
The COUNT function counts the number of cells which contain numbers. Description from Microsoft here: https://support.office.com/en-US/article/COUNT-function-A59CD7FC-B623-4D93-87A4-D23BF411294C. Workaround: Implement such a custom function. See Custom Functions help article here: http://docs.telerik.com/devtools/document-processing/libraries/radspreadprocessing/features/formulas/custom-functions .
When calling AutoFitWidth on single cell selections there is no issue. However, calling it on a multi-column selection the document is corrupted and repair error message is shown when opening it in Excel. Workaround: The AutoFitWidth method may be called for each column separately.
Provide an option to change the display mode of the Worksheet to right-to-left.
Steps to reproduce: 1. Enter in a cell =Today() 2. Show Format Cells dialog and set Custom format "d" Expected: The value is the day of the month. Actual: The date is formatted as short date but has to be day of the month.
Define name which we can import looks like this: <definedName name="Test">Sheet1!$A$1</definedName> The case which can not be handled by RadSpreadProcessing looks like this: <definedName name="Test"><![CDATA[Sheet1!$A$1]]></definedName> The CDATA element is used to escape the inner text in order not to be parsed as XML. That means this is а valid case, and RadSpreadProcessing should handle it.
The item is closed as duplicated of https://feedback.telerik.com/Project/184/Feedback/Details/190065-spreadprocessing-implement-right-to-left-direction.
Allow the customers to work with Shape objects.
For all characters which cannot be represented in XML as defined by the XML 1.0 specification, the characters are escaped using the Unicode numerical character representation escape character format _xHHHH_, where H represents a hexadecimal character in the character's value. This is dedined in the OpenXML specification in 22.9.2.19 ST_Xstring (Escaped String). Currently this causes the following issues: - Documents conaining such characters are imported incorrectly, e.g. <si><t>_x001B_</t></si> is imported as the plain text _x001B_ - ArgumentException with clarification similar to "' ', hexadecimal value 0x1B, is an invalid character." is thrown when trying to export such documents. Example code to reproduce: Workbook workbook = new Workbook(); Worksheet worksheet = workbook.Worksheets.Add(); CellSelection selection = worksheet.Cells[1, 1]; //B2 cell selection.SetValue(string.Format("Error Value: {0} ", Encoding.ASCII.GetString(new byte[] { 27 }))); string fileName = @"D:\temp\SampleFile.xlsx"; IWorkbookFormatProvider formatProvider = new XlsxFormatProvider(); using (FileStream output = new FileStream(fileName, FileMode.Create)) { formatProvider.Export(workbook, output); }
The way the RadSpreadProcessing decides if a row should be exported works slow. It iterates through all the rows in the UsedCellRange and checks if some property is set and if not, checks if some cell is set. This is slow because each row is checked one by one.
If shape extent is declared, the two cell anchor points for the drawing element are ignored. For example if the TwoCellAnchorElement's from and two points declare that the image should be anchored starting from cell A1to F10 and further in the drawing declaration there is defined extents element with image size values, anchor element's points are ignored.
For example, if a user wants to set a 5x5 array of values in the worksheet he has to iterate through all the values one by one and set it to the worksheet. With that API the user should be able to set the entire array with just one method call giving it the array.