【发布时间】:2010-08-15 05:07:05
【问题描述】:
这是将数据导出到现有 xls 工作表的最佳方式。 我需要支持许多版本的excel。 如果我使用的是 Visual Basic。我会使用 CreateObject("Excel.application") 代码来满足我的需要。 c#中的等价物是什么? 我希望它可以在任何版本上工作,如果可能的话,也可以在没有 ms office 的计算机上工作。 请不要花钱购买第三方组件。我们很穷:)。
TY
【问题讨论】:
这是将数据导出到现有 xls 工作表的最佳方式。 我需要支持许多版本的excel。 如果我使用的是 Visual Basic。我会使用 CreateObject("Excel.application") 代码来满足我的需要。 c#中的等价物是什么? 我希望它可以在任何版本上工作,如果可能的话,也可以在没有 ms office 的计算机上工作。 请不要花钱购买第三方组件。我们很穷:)。
TY
【问题讨论】:
使用 C# 写入 Excel 可以使用 Interop.Excel 完成。这里有一个很好的教程,带有屏幕截图,可以帮助实现这一点。
http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm
【讨论】:
有用于将 ASP.Net 网格导出到 Excel 的内置函数。它会向最终用户发出一点警告信息,但它确实有效。
这里有描述:C Sharp Corner
【讨论】:
如果您想打开一个 excel 文档然后添加内容,最简单的方法之一(不需要安装 excel)是获取一个第三方库(可能有一些开源解决方案),它可以读取和保存excel文件。
【讨论】:
我知道你说没有第三方,但原因似乎是成本。
我使用的库是 GemBox。只要电子表格不太大(最多 150 行和 5 个工作表),它就是免费的。对于我的使用来说,这没问题,而且效果很好。
http://www.gemboxsoftware.com/GBSpreadsheet.htm
还有一些开源选项。
如果您正在写入 XML 格式,那么 ExcelPackage 是免费的 (GPL) 并且可能适合您:
http://excelpackage.codeplex.com/
如果您不想要 XML 而想要其他格式,我听说 ExcelLibrary (LGPL) 的优点:
http://code.google.com/p/excellibrary/
还有一个 JExcel 库 (LGPL) 到 C# 的端口:
【讨论】:
我为此使用 EP Plus Excel Export。将来自 Nuget 的 EP Plus 库添加到您的项目中。然后将此类添加到您的项目中。
并在 MVC 上使用它:
public ActionResult ExportToExcel(string cid)
{
var customerList = new List<DtoCustomer>();
customerList = CustomerFactory.Gets();
ExcelExport.EpplusExportToExcelFromObjectList(customerList.ToList<object>(), "Customer List", true);
return null;
}
您还可以定义在 Excel 文档中显示哪个名称的列。你必须为此创建一个属性类。
using System.Attribute;
public class ExportAttribute : Attribute
{
public string DisplayName { get; set; }
public bool IsVisible { get; set; }
}
然后,在你的类中实现这个属性:
public class DtoCustomer
{
[ExportAttribute(DisplayName = "#", IsVisible = false)]
public int ID { get; set; }
[ExportAttribute(DisplayName = "Customer Name", IsVisible = true)]
public string Name{ get; set; }
[ExportAttribute(DisplayName = "Customer Surname", IsVisible = true)]
public string Surname { get; set; }
}
【讨论】: