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

时间:2010-09-28 12:51:01

标签: .net asp.net excel

如果可能,最好是免费的。

我尝试过使用xml / html格式但是我遇到了一个问题,即excel会提示用户输入安全警告,因为内容与MIME类型不匹配(工作表已在网页上下载),没有看来这就好了。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

<强> [更新]

Codeplex下载ExcelPackage库。这是System.IO.Packaging的包装器,用于创建Open XML格式文件(docx,xl​​sx,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。

下载Microsoft Access Database Engine 2010 Redistributable并查看有关如何使用ADO.Net读取/写入Excel文件的this post

只需将连接字符串更改为

即可

Provider=Microsoft.ACE.OLEDB.12.0; data source=pathtoyourfile; Extended Properties=Excel 12.0;

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

答案 2 :(得分:0)

基于这个问题,我不确定你是否需要支持旧的2003(.xls)版本,但是我最近使用了codeplex中的ExcelPackage库来创建xlsx OOXML,它对我来说很有用需要。