从 CSV 生成 Excel 电子表格(ASP.NET C#)[重复]

Posted

技术标签:

【中文标题】从 CSV 生成 Excel 电子表格(ASP.NET C#)[重复]【英文标题】:Generate Excel Spreadsheet from CSV (ASP.NET C#) [duplicate] 【发布时间】: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 方组件的情况下做到这一点?

【问题讨论】:

可能是***.com/questions/151005/…的欺骗 【参考方案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();

【讨论】:

以上是关于从 CSV 生成 Excel 电子表格(ASP.NET C#)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用Open Office从命令行将Excel电子表格的单个工作表导出为CSV

python从Microsoft Excel文件中导入数据

从服务端生成Excel电子表格(GcExcel + SpreadJS)

以编程方式从 Excel 电子表格中提取数据

从服务端生成Excel电子表格(GcExcel + SpreadJS)

在 Excel 中重新创建 Google 电子表格 QUERY()