【问题标题】:Generate Excel Spreadsheet from CSV (ASP.NET C#) [duplicate]从 CSV 生成 Excel 电子表格(ASP.NET C#)[重复]
【发布时间】:2011-05-10 05:35:30
【问题描述】:

可能重复:
Create Excel (.XLS and .XLSX) file from C#

我有一些代码可以生成一个包含多个 CSV 文件的 zip 文件并将其流式传输给用户(没有文件保存在服务器上)。但是,我想创建一个 Excel 工作簿(可以是传统的 xls 或 Office Open XML xlsx 格式),每个 CSV“文件”都是电子表格。

如何在不借助服务器上的 Office 自动化或商业 3rd 方组件的情况下做到这一点?

【问题讨论】:

标签: c# asp.net excel csv


【解决方案1】:

您可以使用 OleDB 在 Excel 文件中生成简单的表格。

请注意,您需要在服务器上生成一个临时文件。

Example.

注意他们的例子是不正确的,需要使用OleDbConnectionStringBuilder,像这样:

OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();

if (isOpenXML)
    builder.Provider = "Microsoft.ACE.OLEDB.12.0";
else
    builder.Provider = "Microsoft.Jet.OLEDB.4.0";

builder.DataSource = fileName;
builder["Extended Properties"] = "Extended Properties=\"Excel 8.0;HDR=YES;\""

using (var con = new OleDbConnection(builder.ToString())) {
    ...
}

【讨论】:

    【解决方案2】:

    你可以自己写excel xml。这是一个很好的任务库,也许它适合你。

    // 编辑 链接:http://www.carlosag.net/Tools/ExcelXmlWriter/Generator.aspx

    【讨论】:

      【解决方案3】:

      Excel 的 XML 格式非常简单,完全不需要进行任何自动化操作。 完整的参考资料在 MSDN 上:http://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx

      【讨论】:

        【解决方案4】:
                Response.ContentType = "application/vnd.ms-excel";
        

        ContentType 属性指定响应的 HTTP 内容类型。如果未指定 ContentType,则默认为 text/HTML。

        DataGrid 中获取所有数据,然后从中获取它可以通过以下方式完成:

        DataGrid.RenderControl
        

        将服务器控件内容输出到提供的HtmlTextWriter 对象并存储有关控件的跟踪信息(如果启用了跟踪)。

                SqlConnection cn = new SqlConnection("yourconnectionstring");
                cn.Open();
                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Users", cn);
                DataTable dt = new DataTable();
                da.Fill(dt);
                DataGrid dg = new DataGrid();
                dg.DataSource = dt;
                dg.DataBind();
        
                System.IO.StringWriter tw = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
        
                dg.RenderControl(hw);
                cn.Close();
        
                Response.Clear();
                Response.ContentType = "application/vnd.ms-excel";
                this.EnableViewState = false;
                Response.Write(tw.ToString());
                Response.End();
        

        【讨论】:

          猜你喜欢
          • 2013-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-30
          • 1970-01-01
          相关资源
          最近更新 更多