从 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
从服务端生成Excel电子表格(GcExcel + SpreadJS)