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
在ASP.NET中创建excel_Asp.net - Fatal编程技术网

在ASP.NET中创建excel

在ASP.NET中创建excel,asp.net,Asp.net,我正在使用VS2010,C#开发一个ASP.NET web项目,我希望我的用户从表格报告中获得excel文件输出,我知道如何创建CSV文件,但我将创建excel文件,例如,单击一个按钮,用户可以下载excel格式的表格数据,我还将编写一些unicode文本(波斯语、波斯语)在我的excel中,我的选项是什么?目前我使用以下代码生成CSV文件: Response.Clear(); Response.Buffer = true; Respons

我正在使用VS2010,C#开发一个ASP.NET web项目,我希望我的用户从表格报告中获得excel文件输出,我知道如何创建CSV文件,但我将创建excel文件,例如,单击一个按钮,用户可以下载excel格式的表格数据,我还将编写一些unicode文本(波斯语、波斯语)在我的excel中,我的选项是什么?目前我使用以下代码生成CSV文件:

            Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=" + "db" + ".csv");
        Response.Charset = "";
        Response.ContentType = "application/text";

        StringBuilder sb = new StringBuilder();
        sb.Clear();

        //append new line
        sb.Append("\r\n");

        for (int i = 0; i < tblDatabase.Rows.Count; i++)
        {
            //add separator
            for (int j = 0; j < tblDatabase.Rows[0].Cells.Count; j++)
                sb.Append(Table3.Rows[i].Cells[j].Text + ",");
            //append new line
            sb.Append("\r\n");
        }
        Response.Output.Write(sb.ToString());
        Response.Flush();
        Response.End();
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=“+”db“+”.csv”);
响应。Charset=“”;
Response.ContentType=“应用程序/文本”;
StringBuilder sb=新的StringBuilder();
(某人清楚地);
//追加新行
sb.追加(“\r\n”);
对于(int i=0;i
修改此代码以创建Excel文件而不是csv时,没有大的变化

换分机就行了

Response.AddHeader("content-disposition", "attachment;filename=" + "db" + ".xls");
更改内容类型

Response.ContentType = "application/vnd.ms-excel";
下面是如何在Excel工作表中写入数据行

Response.Write("<table border='1px' bordercolor='black'>");
Response.Write("<tr>");
// loop through column names to display a header row
foreach (DataColumn dc in tblDatabase.Columns)
{
    Response.Write("<td><strong>" + dc.ColumnName + "</strong></td>");
}
Response.Write("</tr>");

int i;
foreach (DataRow dr in tblDatabase.Rows)
{
    Response.Write("<tr>");
    for (i = 0; i < tblDatabase.Columns.Count; i++)
    {
        Response.Write("<td>" + dr[i].ToString() + "</td>");
    }
    Response.Write("</tr>");
}
// end table
Response.Write("</table>");
Response.Write(“”);
回答。写(“”);
//循环列名以显示标题行
foreach(tblDatabase.Columns中的数据列dc)
{
响应。写入(“”+dc.ColumnName+””;
}
回答。写(“”);
int i;
foreach(tblDatabase.Rows中的数据行dr)
{
回答。写(“”);
对于(i=0;i
我使用NPOI取得了很好的效果,学习曲线不太陡峭

创建本机excel文件,而不是强制excel解析html表。

html表格选项对于某些工作来说是可以的(更快、更简单),但是如果你需要制作“真实”的东西,那么就试试NPOI。

谢谢raja,你的答案非常简单有效!我的文件格式是XLS,是否用于office 2003?当我试图用Office2007打开它时,它问了我一个关于格式的问题,我应该把它的扩展名改为XLSX吗?