The default font size on the client is not saved explicitly on the Excel file, so the Excel defaults take over (11px Calibri), so upon subsequent import all cells will have that font.
Steps to repro:
go to https://demos.telerik.com/aspnet-ajax/spreadsheet/examples/import-export/defaultcs.aspx
export the file
import the file
Expected: nothing changes
Actual: all cells are 11px Calibri
Workaround: Set a default font when the cell font is null
public override void SaveWorkbook(Workbook workbook)
{
string path = "C:\\path-to-output.xlsx";
for (int i = 0; i < workbook.Sheets.Count; i++)
{
for (int j = 0; j < workbook.Sheets[i].Rows.Count; j++)
{
for (int l = 0; l < workbook.Sheets[i].Rows[i].Cells.Count; l++)
{
string fontFamily = workbook.Sheets[i].Rows[i].Cells[l].FontFamily;
workbook.Sheets[i].Rows[i].Cells[l].FontFamily = !string.IsNullOrEmpty(fontFamily) ? fontFamily : "Courier New";
double? fontSize = workbook.Sheets[i].Rows[i].Cells[l].FontSize;
workbook.Sheets[i].Rows[i].Cells[l].FontSize = fontSize.HasValue ? fontSize : 12;
}
}
}
workbook.Save(path);
}
http://screencast.com/t/FJjlN3yw The error message reads 'ContextMenus' could not be initialized. Details: Object reference on set to an instance of an object.
I have RadSpreadsheet with 5 rows. If I copy 10 rows from Excel into RadSpreadsheet, it will show error message "Cannot paste, because area not the same size".
Is it possible to get RadSpreadsheet to automatically add rows when we paste data? (similar to the Kendo Spreadsheet Widget)
Please add a cell Name field visible on the client and server side. If this name could be grabbed from an excel spreadsheet using the naming functionality built into excel, that would be a major plus.
Repro:
<telerik:RadSpreadsheet runat="server" ID="RadSpreadsheet1" />
<telerik:RadSpreadsheet runat="server" ID="RadSpreadsheet2" />
protected void Page_Load(object sender, EventArgs e)
{
var workbook = new Workbook();
var sheet1 = workbook.AddSheet();
AddDateRow(sheet1);
sheet1.Columns = new List<Column>() { new Column() { Index = 1, Width = 150 } };
RadSpreadsheet1.Sheets.Add(sheet1);
RadSpreadsheet2.Sheets.Add(sheet1);
RadSpreadsheet1.ColumnsCount = 5;
RadSpreadsheet1.RowsCount = 10;
}
private void AddDateRow(Worksheet sheet1)
{
var row = new Row() { Index = 0 };
Cell firstCell = new Cell() { Index = 0, Value = "Select Date:", Bold = true };
row.AddCell(firstCell);
Cell secondCell = new Cell() { Index = 1, Value = "", Bold = true, Background = "#fef0cd", Format = "mmmm d, yyyy" };
secondCell.Validation = new Validation()
{
AllowNulls = true,
DataType = "date",
ShowButton = true,
ComparerType = "between",
From = "DATEVALUE(\"1/1/2000\")",
To = "DATEVALUE(\"12/31/2020\")",
Type = "reject",
TitleTemplate = "Invalid date selected",
MessageTemplate = "Select a date between year 2000 and 2020."
};
row.AddCell(secondCell);
sheet1.AddRow(row);
}
Please can you implement cell-based drag-and-drop in the radSpreadsheet control. The control looks amazing. This feature would enable me to completely rewrite and simplify a number of my applications and give them a much more professional look-and-feel. Regards, Paul.
In Internet Explorer version 11.418.18362.0, when hovering over the lower-right dot the cursor doesn't change to the expected cross-hair.
To Reproduce:
1. Open IE11
2. Navigate to the ASP.NET Spreadsheet Demo
3. Highlight a few cells
4. Hover the cursor over the lower-right dot
Expected Behavior:
The cursor changes to a thin cross-hair icon but it doesn't change in IE 11.
The Spreadsheet control looks fantastic and will help us replace existing functionality, along with building new streamlined user interfaces. Please include the ability to specify individual cells that function as drop-downs, where we could bind the data to an external source and have the user select one of the options.
I would like to see the ability to add checkboxes to spreadsheet cells. In particular, I would like to check boxes in the top row and/or the right column to select rows or columns and then modify cell values based on the the selected checkboxes.
Can be interesting the power pivot functionality to be supported for spreadsheet control for telerik ui for Ajax.Net.
The spreadsheet adjusts the width based on how many toolbar items are available. The width property doesn't help. It would be nice to have the spreadsheet list of tools to collapse if a width is specified that is smaller than the toolbar row at the top. I don't always want the spreadsheet to be the same width as the tools that are available.
The SpreadProcessing library gets into account the current server culture and the SpreadsheetDocumentProvider uses different decimal and list separators based on the culture while the RadSpreadsheet control supports only comma as a list separator and dot as a decimal separator. The JavaScript error that is thrown when using the "sv-SE" culture is caused by the fact that this culture uses the comma as a decimal separator and semicolon as a list separator. One possible workaround is to change the current thread's culture before creating the Spreadsheet's provider and then restore the culture.
Problem with simple excel behavior. In excel when you type a string longer than the cell, text is not clipped and shows over other cells. Then, if you fill adjacent cell, text is then clipped. I've been able to mimic this behaviour using this css: .RadSpreadsheet .rssPane .k-spreadsheet-cell { overflow: visible !important; } But then, If you highlite those cells with background color the text is again clipped. The background color wipe the text. Attached is a small png to show the problem. Please fix this to work as excel. Users are complaining non stop. Thanks.
Getting these errors when trying to update spreadsheet cells. Uncaught TypeError: Cannot read property 'offsetWidth' of undefined
The issue is happening even on the demo component when editing a cell:
https://demos.telerik.com/aspnet-ajax/spreadsheet/examples/overview/defaultcs.aspx
Workaround from Admin:
Load the following script under the ScriptManager:
<script>
if (kendo && kendo.spreadsheet && kendo.spreadsheet.SheetEditor) {
kendo.spreadsheet.SheetEditor.fn.activate = function (options) {
var viewElement = this.view.element, viewWidth, scrollerElement, scrollbarWidth;
this._active = true;
this._rect = options.rect;
this._range = options.range;
this.cellInput.position(options.rect);
this.cellInput.resize(options.rect);
this.cellInput.tooltip(options.tooltip);
this.cellInput.activeCell = this.barInput.activeCell = this._range.topLeft();
this.cellInput.activeSheet = this.barInput.activeSheet = this._range._sheet;
if (viewElement) {
viewWidth = viewElement.width();
scrollerElement = viewElement.find('.' + kendo.spreadsheet.View.classNames.scroller)[0];
scrollbarWidth = scrollerElement.offsetWidth - scrollerElement.clientWidth;
this.cellInput.element.css('max-width', viewWidth - scrollbarWidth - this.cellInput.element.position().left + 'px');
}
this.trigger('activate');
return this;
}
}
</script>
Currently, a script solution is required to pre-select a sheet different from the first one.
function pageLoadHandler() {
var spreadsheet = $find("<%= RadSpreadsheet1.ClientID %>").get_kendoWidget();
var sheet = spreadsheet.sheetByName("Sheet1");
spreadsheet.activeSheet(sheet);
// Sys.Application.remove_load(pageLoadHandler);
}
Sys.Application.add_load(pageLoadHandler);
This script could be entirely loaded from the server-side following this article on how to properly register a script from the code-behind: