需要一个从ASP.NET创建二进制Excel文件的库有人知道一个好的库吗?

需要一个从ASP.NET创建二进制Excel文件的库有人知道一个好的库吗?,.net,asp.net,excel,.net,Asp.net,Excel,如果可能,最好是免费的 我尝试过使用xml/html格式,但遇到了一个问题,excel会提示用户一个安全警告,因为内容与MIME类型不匹配(该工作表是在web上下载的),似乎无法解决这个问题。使用xml时可以使用以下解决方法:[Update] 从下载ExcelPackage库。这是一个围绕System.IO.Packaging的包装器,用于创建打开的XML格式文件(docx、xlsx、pptx) 添加的示例不包含颜色格式化,但请检查站点上的示例是否使用模板,或者阅读Codeplex上的讨论,了解

如果可能,最好是免费的


我尝试过使用xml/html格式,但遇到了一个问题,excel会提示用户一个安全警告,因为内容与MIME类型不匹配(该工作表是在web上下载的),似乎无法解决这个问题。

使用xml时可以使用以下解决方法:

[Update]

从下载ExcelPackage库。这是一个围绕
System.IO.Packaging
的包装器,用于创建打开的XML格式文件(docx、xlsx、pptx)

添加的示例不包含颜色格式化,但请检查站点上的示例是否使用模板,或者阅读Codeplex上的讨论,了解qa关于为每个单元格设置更多样式选项的内容

public void CreateExcel()
{
    FileInfo newFile = new FileInfo(@"C:\temp\test.xlsx");
    using (ExcelPackage xlPackage = new ExcelPackage(newFile))
    {
        ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets.Add("People");

        // Titles in Column 1
        worksheet.Cell(1, 1).Value = "Name";
        worksheet.Cell(3, 1).Value = "Tom";
        worksheet.Cell(4, 1).Value = "Henry";

        worksheet.Column(1).Width = 20; // set column 1 width                

        // Values in column 2
        worksheet.Cell(1, 2).Value = "Age";
        ExcelCell cell1 = worksheet.Cell(3, 2);                
        cell1.Value = "42"; // Age of Tom
        ExcelCell cell2 = worksheet.Cell(4, 2);
        cell2.Value = "19"; // Age of Henry

        string calcStartAddress = cell1.CellAddress;
        string calcEndAddress = cell2.CellAddress;

        worksheet.Cell(5, 2).Formula = string.Format("SUM({0}:{1})",calcStartAddress, calcEndAddress);
        worksheet.Cell(6, 2).Formula = string.Format("AVERAGE({0}:{1})", calcStartAddress, calcEndAddress);
        xlPackage.Save();
    }
}

[原始答案]

您可以使用ADO.Net

下载并查看如何使用ADO.Net读取/写入Excel文件

只需将连接字符串更改为

Provider=Microsoft.ACE.OLEDB.12.0;数据源=文件的路径;扩展属性=Excel 12.0


使用v12和ACE.OLEDB连接而不是Jet.OLEDB.

基于这个问题,我不确定您是否需要对较旧的2003(.xls)版本的支持,但我最近使用codeplex中的库创建了xlsx OOXML,它非常适合我的需要。

您确定使用Response.AddHeaders为内容类型和内容处置添加了标题吗?还请注意,office 2007及更高版本的mime类型(内容类型)与旧版本的office不同。是的,我使用了以下内容:Response.AddHeader(“内容处置”,“附件;文件名=Report.xls”);Response.ContentType=“application/vnd.ms excel”;说真的,我很惊讶这是一个如此难以解决的问题,而不必花费在电子表格设备许可证或其他东西上!根据第一个链接,扩展属性应该设置为“Excel14.0”,我知道,但我在这方面遇到了问题,12似乎可以工作。12是Office 2007的版本号,14是2010的版本号。但是文件格式在2007年和2010年之间没有改变。我需要更多的格式控制来提供更不幸的是。添加了使用ExcelPackage的链接和代码示例。您应该能够使用模板按照您想要的方式对其进行样式设置,或者像讨论论坛中提到的那样修改代码。