问题描述
嗨............
我想将网格视图数据导出到excel。我没有问题,但只有问题是Excel文件存储在解决方案本身中的
。我想显示一个对话框,要求用户选择存储该excel文件的路径。
这是我的代码
protected void btnExport_Click(object sender,EventArgs e)
{
DataTable dt = new DataTable();
dt = Session [data] as DataTable;
string FolderPath ;
StreamWriter objSw;
//创建CSV文件
if(Directory.Exists(Server.MapPath) (〜/ Reports)))
{
FolderPath = Server.MapPath(〜/ Reports);
objSw = new StreamWriter(FolderPath +/ TrackRequest+ DateTime.Now.ToString(ddMMMyyyyHHmmss)+。csv);
}
else
{
FolderPath = Server.MapPath(〜/ Reports);
目录。 CreateDirectory(FolderPath);
objSw = new StreamWriter(FolderPath +/ TrackRequest+ DateTime.Now.ToString(ddMMMyyyyHHm mss)+。csv);
}
//从GridView1获取表格
DataTable objDt = dt; //((DataSet)gvPayDetail.DataSource).Tables[0];
//在GridView中获取列数
int NoOfColumn = objDt.Columns.Count;
//创建标题
for(int i = 0; i< NoOfColumn; i ++)
{
objSw.Write(objDt.Columns [i]);
//检查不是最后一栏
if(i< NoOfColumn - 1)
{
objSw.Write(,);
}
}
objSw.Write(objSw.NewLine);
//创建数据
foreach(objDt.Rows中的DataRow博士)
{
for(int i = 0; i< NoOfColumn; i ++)
{
objSw.Write(dr [i] .ToString());
if(i< NoOfColumn - 1)
{
objSw.Write(,);
}
}
objSw.Write(objSw.NewLine);
}
objSw.Close();
}
Hi ............
I want to Export grid view data to excel.I have no problem in this but only problem is
that Excel file is storing in Solution itself.I want to show a dialog box for asking user to select path to store that excel file.
here is my code
protected void btnExport_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = Session["data"] as DataTable;
string FolderPath;
StreamWriter objSw;
//Create CSV file
if (Directory.Exists(Server.MapPath("~/Reports")))
{
FolderPath = Server.MapPath("~/Reports");
objSw = new StreamWriter(FolderPath + "/TrackRequest" + DateTime.Now.ToString("ddMMMyyyyHHmmss") + ".csv");
}
else
{
FolderPath = Server.MapPath("~/Reports");
Directory.CreateDirectory(FolderPath);
objSw = new StreamWriter(FolderPath + "/TrackRequest" + DateTime.Now.ToString("ddMMMyyyyHHmmss") + ".csv");
}
//get table from GridView1
DataTable objDt = dt; //((DataSet)gvPayDetail.DataSource).Tables[0];
//Get No Of Column in GridView
int NoOfColumn = objDt.Columns.Count;
//Create Header
for (int i = 0; i < NoOfColumn; i++)
{
objSw.Write(objDt.Columns[i]);
//check not last column
if (i < NoOfColumn - 1)
{
objSw.Write(",");
}
}
objSw.Write(objSw.NewLine);
//Create Data
foreach (DataRow dr in objDt.Rows)
{
for (int i = 0; i < NoOfColumn; i++)
{
objSw.Write(dr[i].ToString());
if (i < NoOfColumn - 1)
{
objSw.Write(",");
}
}
objSw.Write(objSw.NewLine);
}
objSw.Close();
}
推荐答案
private void DataTableToCSVFile(string filename, DataTable dt)
{
HttpContext context = HttpContext.Current;
context.Response.Clear();
DataTable dtExcel = dt;
foreach (DataColumn column in dtExcel.Columns)
{
context.Response.Write(column.ColumnName + ",");
}
context.Response.Write(Environment.NewLine);
foreach (DataRow row in dtExcel.Rows)
{
for (int i = 0; i < dtExcel.Columns.Count; i++)
{
context.Response.Write(row[i].ToString().Replace(",", string.Empty) + ",");
}
context.Response.Write(Environment.NewLine);
}
context.Response.ContentType = "text/csv";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "_" + DateTime.Now + ".csv");
context.Response.End();
}
using System.Windows.Forms;
OpenFileDialog openFileDialog = new OpenFileDialog();
这篇关于在asp.net中打开/保存文件对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!