我目前有一个使用C#中的StringBuilder构建的CSV。
此CSV由以下人员生成:
使用LINQ查询数据库
将结果条目转储到列表中
循环列表并拉出CSV所需的实体
格式化并将行添加到StringBuilder变量
使用StreamWriter方法导出CSV
最近我被告知我需要将此文件作为XLS文件而不是CSV文件。我做了一些研究,但我是初学者编码器,并且不确定如何将此文件转换为XLS或从我的查询数据创建XLS。请记住,在检索查询结果后,必须在导出之前正确格式化数据。
实施例
数据库产品编号:9999-0000
相邻系统产品#:99990000BA
数据库日期:12/05/2010
相邻系统日期:2010/05/12
从我当前的代码/数据创建XLS或转换为XLS的最佳方法是什么?
答案 0 :(得分:1)
如果您可以生成xlsx而不是xls,我的偏好是来自Microsoft的Open XML SDK。
答案 1 :(得分:1)
答案 2 :(得分:1)
我几天前面临同样的挑战,我找到了解决方案(下面的代码)
您将看到一个seeion [“dsource”],其中包含搜索/过滤搜索页面中的数据源
不要忘记添加 EnableEventValidation =“false”
这是aspx页面
<%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation ="false" CodeFile="csresults.aspx.cs" Inherits="csresults" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:Button ID="Button1" runat="server" Text="back" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Export" />
<asp:GridView ID="gridview1" runat="server">
</asp:GridView>
</form>
</body>
</html>
这是背后的代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Threading;
using System.IO;
using System.Reflection;
public partial class csresults : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
gridview1.DataSource = Session["dsource"];
gridview1.DataBind();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
HtmlForm form = new HtmlForm();
string attachment = "attachment; filename=Patients.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/ms-excel";
StringWriter stw = new StringWriter();
HtmlTextWriter htextw = new HtmlTextWriter(stw);
form.Controls.Add(gridview1);
this.Controls.Add(form);
form.RenderControl(htextw);
Response.Write(stw.ToString());
Response.End();
}
}
答案 3 :(得分:1)
感谢帮助人员!
我最终使用mokokamello的代码作为基础,最终以一种不同的方式引导我找到答案。最后,我创建了一个DataTable,将其添加到DataSet并使用带有嵌套DataGrid的HttpResponse来导出Excel文件。我能够从中获得最大的意义。
public static void ExportDStoExcel(DataSet ds, string filename)
{
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.Charset = "";
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
DataGrid dg = new DataGrid();
dg.DataSource = ds.Tables[0];
dg.DataBind();
dg.RenderControl(htw);
response.Write(sw.ToString());
response.End();
}
}
}
答案 4 :(得分:0)
您可以通过以MS Excel格式编写自己的xml文件来更简单,该格式将在Excel中无缝打开。
阅读详情:http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats#Excel_XML_Spreadsheet_example
检查示例并注意您可以进一步删除代码。