如何使用C#创建Excel电子表格而不需要在运行代码的计算机上安装Excel?


当前回答

各种Office 2003 XML库适用于较小的excel文件。然而,我发现以XML格式保存的大型工作簿的大小是一个问题。例如,我使用的新XLSX格式的工作簿将是40MB(当然也更紧凑),它将变成360MB的XML文件。

就我的研究而言,有两个商业软件包允许输出到较旧的二进制文件格式。他们是:

宝石盒ComponentOne Excel

两者都不便宜(我认为分别为500美元和800美元)。但两者都独立于Excel本身。

我会好奇的是OpenOffice.org之类的Excel输出模块。我想知道它们是否可以从Java移植到.Net。

其他回答

这里有一个完全免费的C#库,它允许您使用OpenXML库从DataSet、DataTable或List<>导出到真正的Excel 2007.xlsx文件中:

http://mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

免费提供完整的源代码以及说明和演示应用程序。

将此类添加到应用程序后,只需一行代码即可将DataSet导出到Excel:

CreateExcelFile.CreateExcelDocument(myDataSet, "C:\\Sample.xlsx");

没有比这更简单的了。。。

它甚至不需要Excel出现在您的服务器上。

如何在OneDrive上使用C#创建Excel(.xslx)文件而不安装Microsoft Office

Microsoft Graph API提供文件和Excel API,用于为企业和消费者帐户创建和修改存储在OneDrive中的Excel文件。Microsoft.Graph NuGet包提供了许多用于使用File和Excel API的接口。

{
  Name = "myExcelFile.xslx",
  File = new Microsoft.Graph.File()
};

// Create an empty file in the user's OneDrive.
var excelWorkbookDriveItem = await graphClient.Me.Drive.Root.Children.Request().AddAsync(excelWorkbook);

// Add the contents of a template Excel file.
DriveItem excelDriveItem;
using (Stream ms = ResourceHelper.GetResourceAsStream(ResourceHelper.ExcelTestResource))
{
    //Upload content to the file. ExcelTestResource is an empty template Excel file.
    //https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/item_uploadcontent
    excelDriveItem = await graphClient.Me.Drive.Items[excelWorkbookDriveItem.Id].Content.Request().PutAsync<DriveItem>(ms);
}

此时,您现在已经在用户(企业或消费者)或组的OneDrive中创建了一个Excel文件。现在,您可以使用Excel API对Excel文件进行更改,而无需使用Excel,也无需了解Excel XML格式。

OpenXML也是一个很好的选择,它有助于避免在服务器上安装MS Excel。Microsoft提供的Open XML SDK 2.0简化了操作Open XML包和包中的底层Open XML架构元素的任务。开放式XML应用程序编程接口(API)封装了开发人员在开放式XML包上执行的许多常见任务。

看看OpenXML:有助于避免在服务器上安装MS Excel的替代方案

前段时间,我在NPOI上创建了一个DLL。使用它非常简单:

IList<DummyPerson> dummyPeople = new List<DummyPerson>();
//Add data to dummyPeople...
IExportEngine engine = new ExcelExportEngine();
engine.AddData(dummyPeople); 
MemoryStream memory = engine.Export();

你可以在这里阅读更多。

顺便说一句,它是100%开源的。随时使用、编辑和共享;)

您可以使用ExcelXmlWriter。

它工作得很好。