Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据转换为CSV_C#_Asp.net - Fatal编程技术网

C# 将数据转换为CSV

C# 将数据转换为CSV,c#,asp.net,C#,Asp.net,我有一个C#/ASPX表单,它在SQL Server中有一个包含8列(StoreID、Date、EmpID、EmployeeName、Starttime、Endtime、Starttime、Endtime)的表 我只想转换存储ID、日期、EmpID、第一个开始时间和最后一个结束时间) 但是,当我单击按钮时,它会转换所有列,在转换期间如何限制列 这是导出按钮代码: public partial class _Default : System.Web.UI.Page { protected

我有一个C#/ASPX表单,它在SQL Server中有一个包含8列(StoreID、Date、EmpID、EmployeeName、Starttime、Endtime、Starttime、Endtime)的表

我只想转换存储ID、日期、EmpID、第一个开始时间和最后一个结束时间)

但是,当我单击按钮时,它会转换所有列,在转换期间如何限制列

这是导出按钮代码:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnExportCSV_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv");
        Response.Charset = "";
        Response.ContentType = "application/text";

        GridView1.AllowPaging = false;
        GridView1.DataBind();

        StringBuilder sb = new StringBuilder();
        for (int k = 0; k < GridView1.Columns.Count; k++)
        {
            //add separator
            sb.Append(GridView1.Columns[k].HeaderText + ',');
        }
        //append new line
        sb.Append("\r\n");
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            for (int k = 0; k < GridView1.Columns.Count; k++)
            {
                //add separator
                sb.Append(GridView1.Rows[i].Cells[k].Text + ',');
            }
            //append new line
            sb.Append("\r\n");
        }
        Response.Output.Write(sb.ToString());
        Response.Flush();
        Response.End();
    }
}
public分部类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
}
受保护的无效btnExportCSV\u单击(对象发送方,事件参数e)
{
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=GridViewExport.csv”);
响应。Charset=“”;
Response.ContentType=“应用程序/文本”;
GridView1.AllowPaging=false;
GridView1.DataBind();
StringBuilder sb=新的StringBuilder();
for(int k=0;k
我还没有编译这段代码,但它应该可以工作

protected void btnExportCSV_Click(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv");
    Response.Charset = "";
    Response.ContentType = "application/text";

    GridView1.AllowPaging = false;
    GridView1.DataBind();

    StringBuilder sb = new StringBuilder();
    bool hitFirstStartTime = false;
    for (int k = 0; k < GridView1.Columns.Count; k++)
    {
        var letsDoThis = false;

        if (GridView1.Columns[k].HeaderText == "Storeid" ||
            GridView1.Columns[k].HeaderText == "Date" ||
            GridView1.Columns[k].HeaderText == "EmpID")
        {
            letsDoThis = true;
        }
        else if (GridView1.Columns[k].HeaderText == "Starttime" && !hitFirstStartTime)
        {
            letsDoThis = true;
            hitFirstStartTime = true;
        }
        else if (GridView1.Columns[k].HeaderText == "Endtime" &&  k == GridView1.Columns.Count)
        {
            letsDoThis = true;
        }

        if (letsDoThis)
            sb.Append(GridView1.Columns[k].HeaderText + ',');
    }
    //append new line
    sb.Append("\r\n");
    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        bool hitFirstStartTime = false;
        for (int k = 0; k < GridView1.Columns.Count; k++)
        {
            var letsDoThis = false;

            if (GridView1.Columns[k].HeaderText == "Storeid" ||
                GridView1.Columns[k].HeaderText == "Date" ||
                GridView1.Columns[k].HeaderText == "EmpID")
                letsDoThis = true;
            else if (GridView1.Columns[k].HeaderText == "Starttime" && 
                     !hitFirstStartTime)
                letsDoThis = true;
            else if (GridView1.Columns[k].HeaderText == "Endtime" && 
                     k == GridView1.Columns.Count)
                letsDoThis = true;
            {
                letsDoThis = true;
                hitFirstStartTime = true;
            }

            if (letsDoThis)
                sb.Append(GridView1.Columns[k].HeaderText + ',');
        }
        //append new line
        sb.Append("\r\n");
    }
    Response.Output.Write(sb.ToString());
    Response.Flush();
    Response.End();
}
protectedvoid btnExportCSV\u单击(对象发送方,事件参数e)
{
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=GridViewExport.csv”);
响应。Charset=“”;
Response.ContentType=“应用程序/文本”;
GridView1.AllowPaging=false;
GridView1.DataBind();
StringBuilder sb=新的StringBuilder();
bool hitFirstStartTime=false;
for(int k=0;k
如果您知道要导出的列索引,例如:

存储ID日期EmpID|员工姓名|开始时间|结束时间|开始时间|结束时间

必须从索引为0、1、2、4、7的列中获取值

那么您的代码就可以像这样简单了

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnExportCSV_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv");
        Response.Charset = "";
        Response.ContentType = "application/text";

        GridView1.AllowPaging = false;
        GridView1.DataBind();

        StringBuilder sb = new StringBuilder();
        //add separator for header
        sb.Append(GridView1.Columns[0].HeaderText).Append(",")
            .Append(GridView1.Columns[1].HeaderText).Append(",")
            .Append(GridView1.Columns[2].HeaderText).Append(",")
            .Append(GridView1.Columns[4].HeaderText).Append(",")
            .Append(GridView1.Columns[7].HeaderText).Append("\r\n");

        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            DateTime date = DateTime.Parse(GridView1.Rows[i].Cells[1].Text);

            if (date.DayOfWeek != DayOfWeek.Saturday 
                 && date.DayOfWeek != DayOfWeek.Sunday) 
            {
               //add separator for each row
               sb.Append(GridView1.Rows[i].Cells[0].Text).Append(",")
               .Append(GridView1.Rows[i].Cells[1].Text).Append(",")
               .Append(GridView1.Rows[i].Cells[2].Text).Append(",")
               .Append(GridView1.Rows[i].Cells[4].Text).Append(",")
               .Append(GridView1.Rows[i].Cells[7].Text).Append("\r\n");
            }
        }
        Response.Output.Write(sb.ToString());
        Response.Flush();
        Response.End();
    }
}
public分部类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
}
受保护的无效btnExportCSV\u单击(对象发送方,事件参数e)
{
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=GridViewExport.csv”);
响应。Charset=“”;
Response.ContentType=“应用程序/文本”;
GridView1.AllowPaging=false;
GridView1.DataBind();
StringBuilder sb=新的StringBuilder();
//为标题添加分隔符
sb.Append(GridView1.Columns[0].HeaderText.Append(“,”)
.Append(GridView1.Columns[1].HeaderText.Append(“,”)
.Append(GridView1.Columns[2].HeaderText.Append(“,”)
.Append(GridView1.Columns[4].HeaderText.Append(“,”)
.Append(GridView1.Columns[7].HeaderText.Append(“\r\n”);
对于(int i=0;i