如何使用C#创建Excel电子表格而不需要在运行代码的计算机上安装Excel?
当前回答
从C#创建Excel文件的最简单和最快捷的方法是使用OpenXMLProductivity工具。OpenXMLProductivity工具随OpenXMLSDK安装一起提供。该工具将任何Excel文件反向工程为C#代码。然后可以使用C#代码重新生成该文件。
所涉及的流程概述如下:
使用该工具安装OpenXMLSDK。使用具有所需外观的最新Excel客户端创建Excel文件。将其命名为DesiredLook.xlsx。使用该工具打开DesiredLook.xlsx并单击顶部附近的Reflect Code按钮。文件的C#代码将在工具的右窗格中生成。将其添加到C#解决方案中,并生成具有所需外观的文件。
另外,此方法适用于任何Word和PowerPoint文件。作为C#开发人员,您将根据需要对代码进行更改。
我在github上开发了一个简单的WPF应用程序,将在Windows上运行。有一个名为GeneratedClass的占位符类,您可以在其中粘贴生成的代码。如果您返回文件的一个版本,它将生成如下excel文件:
其他回答
一个非常轻量级的选项可能是使用HTML表。只需在文件中创建head、body和table标记,然后将其另存为扩展名为.xls的文件。您可以使用Microsoft特定的属性来设置输出样式,包括公式。
我意识到,您可能没有在web应用程序中对此进行编码,但这里有一个通过HTML表组成Excel文件的示例。如果您正在编写控制台应用程序、桌面应用程序或服务,则可以使用此技术。
各种Office 2003 XML库适用于较小的excel文件。然而,我发现以XML格式保存的大型工作簿的大小是一个问题。例如,我使用的新XLSX格式的工作簿将是40MB(当然也更紧凑),它将变成360MB的XML文件。
就我的研究而言,有两个商业软件包允许输出到较旧的二进制文件格式。他们是:
宝石盒ComponentOne Excel
两者都不便宜(我认为分别为500美元和800美元)。但两者都独立于Excel本身。
我会好奇的是OpenOffice.org之类的Excel输出模块。我想知道它们是否可以从Java移植到.Net。
您只需使用Excel XML格式将其写入XML,并以.XLS扩展名命名,它将以Excel打开。您可以控制XML文件标题中的所有格式(粗体、宽度等)。
维基百科中有一个XML示例。
一个经常被忽略的简单选项是使用Microsoft Reporting创建.rdlc报告并将其导出为excel格式。您可以在visual studio中设计它,并使用以下方法生成文件:
localReport.Render("EXCELOPENXML", null, ((name, ext, encoding, mimeType, willSeek) => stream = new FileStream(name, FileMode.CreateNew)), out warnings);
您还可以分别使用“WORDOPENXML”和“pdf”将其导出为.doc或.pdf,并且它在许多不同的平台(如ASP.NET和SSRS)上都受支持。
在可视化设计器中进行更改要容易得多,在那里您可以看到结果,相信我,一旦开始分组数据、格式化组标题、添加新节,您就不想处理几十个XML节点。
如何在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格式。
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 为什么Visual Studio 2015/2017/2019测试运行器没有发现我的xUnit v2测试
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 没有ListBox。SelectionMode="None",是否有其他方法禁用列表框中的选择?
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- c#线程安全快速(est)计数器
- 如何将此foreach代码转换为Parallel.ForEach?
- 如何在iis7应用程序池中设置。net Framework 4.5版本