Création d'un classur Excel (* .xls) avec des formules à partir de .NET

Je travaille avec ASP.NET Webforms et je dois créer un rapport en tant que file Excel.

Cela devrait être simple, en modifiant le ContentType, mais je dois append des formules dynamics à certaines cellules.

Des idées?

PS: Le format du file excel doit être XLS et non XLSX.

Je recommand SpreadsheetML pour cela. C'est juste un schéma xml que vous pouvez utiliser pour créer des documents que Excel ouvrira comme si ils étaient originaux. Vous pouvez définir des formules, du formatting, des feuilles multiples et la plupart des autres fonctionnalités excel.

Soyez prudent lors du googling pour des informations supplémentaires sur SpreadSheetML: il y a beaucoup de désinformation qui confond SpreadSheetML avec le nouveau format Xml utilisé pour Excel dans Office 2007. Ce n'est pas le cas. SpreadSheetML fonctionne aussi bien que OfficeXP, et même dans un sens limité dans Office 2000.

Si rien d'autre, le lien SpreadSheetML au début de cette publication comprend également un bref aperçu d'autres options pour créer des files Excel.

Avez-vous essayé cette bibliothèque ExcelXmlWriter ?

En outre, il existe un outil assistant / générateur qui accompagne la bibliothèque.

Il générera des files .XLS. L'échantillon du site affiche:

using CarlosAg.ExcelXmlWriter; class TestApp { static void Main(ssortingng[] args) { Workbook book = new Workbook(); Worksheet sheet = book.Worksheets.Add("Sample"); WorksheetRow row = sheet.Table.Rows.Add(); row.Cells.Add("Hello World"); book.Save(@"c:\test.xls"); } } 

J'ai utilisé Infragistics Excel export / import component pour cela et ça marche très bien.

Il prend en charge les formules et le style et est assez solide. Le seul inconvénient, c'est qu'il est assez coûteux et doit être acheté dans le cadre d'un package.

SpreadsheetGear for .NET crée des classurs XLS ou XLSX et comprend un support de formule complet.

Vous pouvez voir ici des échantillons en direct ASP.NET Excel Reporting.

Avertissement: je possède SpreadsheetGear LLC.