如何在ASP.Net中创建多个CSV文件
我想为每个如何在ASP.Net中创建多个CSV文件,asp.net,csv,file,download,streamwriter,Asp.net,Csv,File,Download,Streamwriter,我想为每个下拉选择的值创建多个CSV文件。即使在调试过程中,我可以注意到csv附加了不同的下拉值,但没有写入另一个csv文件。不知道我为什么在哪里犯错 当我删除using block时,第二次出现抛出错误: The process cannot access the file 'File path' because it is being used by another process. 我认为需要在服务器上存储所有文件,但同样的问题 我添加了代码来解决错误,但没有更改 if (File.Ex
下拉选择的值创建多个CSV
文件。即使在调试过程中,我可以注意到csv附加了不同的下拉值,但没有写入另一个csv文件。不知道我为什么在哪里犯错
当我删除using block时,第二次出现抛出错误:
The process cannot access the file 'File path' because it is being used by another process.
我认为需要在服务器上存储所有文件,但同样的问题
我添加了代码来解决错误,但没有更改
if (File.Exists(filePath))
File.Delete(filePath);
按钮代码
protected void btnGenerate_Click(object sender, EventArgs e)
{
List<int> stopWordArray = new List<int>();
foreach (ListItem listItem in ddlDepot.Items)
{
if (listItem.Selected)
{
string FileType = ddlqoutatfileType.SelectedItem.Text;
DateTime Qotation_Date = Convert.ToDateTime(txtdate.Text).AddDays(3);
var Qotation_Date_modified = Qotation_Date.ToShortDateString();
OracleCommand CmdB = new OracleCommand("Select DEPOT_CODE, PRODUCT_CODE, TO_CHAR(TO_DATE(UPLOAD_DATE,'DD/MM/YYYY'), 'DDMMYYY') as UPLOAD_DATE , TO_CHAR(TO_DATE(SALES_DATE,'DD/MM/YYYY'), 'DDMMYYYY') as SALES_DATE, ORDER_QTY, FILE_TYPE, ROUTE_CODE from SCM_SARAS_ORDERS_vw where File_Type = '" + FileType + "' and DEPOT_CODE =" + listItem.Value + " and SALES_DATE = TO_DATE('" + Qotation_Date_modified + "' , 'DD/MM/YYYY')", con);
CmdB.CommandType = CommandType.Text;
OracleDataAdapter daB = new OracleDataAdapter();
DataTable dtB = new DataTable();
daB.SelectCommand = CmdB;
daB.Fill(dtB);
string csv = string.Empty;
foreach (DataRow row in dtB.Rows)
{
foreach (DataColumn column in dtB.Columns)
{
csv += row[column.ColumnName].ToString().Replace(",", ";") + ',';
}
csv += "\r\n";
}
string fileName = "myfile.csv";
string filePath = Server.MapPath("~/file" + fileName);
using (StreamWriter sw = new StreamWriter(filePath, false))
{
sw.Write(csv);
}
}
}
}
protectedvoidbtngenerate\u单击(对象发送者,事件参数e)
{
List stopWordArray=新列表();
foreach(ddlDepot.Items中的ListItem ListItem)
{
如果(listItem.Selected)
{
string FileType=ddlqoutfiletype.SelectedItem.Text;
DateTime Qotation_Date=Convert.ToDateTime(txtdate.Text).AddDays(3);
var Qotation_Date_modified=Qotation_Date.toSortDateString();
OracleCommand CmdB=new OracleCommand(“选择仓库代码、产品代码、至字符(至日期(上传日期,'DD/MM/YYYY')、'DDMMYYY')作为上传日期,至字符(至日期(销售日期,'DD/MM/YYYY')、'DDMMYYYY')作为销售日期、订单数量、文件类型、来自SCM的路线代码,其中文件类型=“+FileType+”,仓库代码=“+listItem.Value+“和销售日期=截止日期(“+Qotation\u DATE\u modified+”,“DD/MM/yyyyy”),con);
CmdB.CommandType=CommandType.Text;
OracleDataAdapter daB=新的OracleDataAdapter();
DataTable dtB=新的DataTable();
daB.SelectCommand=CmdB;
daB.填充(dtB);
string csv=string.Empty;
foreach(dtB.Rows中的数据行)
{
foreach(dtB.Columns中的DataColumn列)
{
csv+=行[column.ColumnName].ToString().Replace(“,”,“;”)+“,”;
}
csv+=“\r\n”;
}
字符串fileName=“myfile.csv”;
字符串filePath=Server.MapPath(“~/file”+文件名);
使用(StreamWriter sw=新StreamWriter(文件路径,false))
{
软件写入(csv);
}
}
}
}
我不知道你说的跟车问题是什么意思。
#但不写入另一个CSV文件#
显然,在代码中,您在循环中编写了相同的文件;为什么不将其更改为
string fileName = "myfile"+listItem.Value+".csv";//change filename?
string filePath = Server.MapPath("~/file" + fileName);
using (StreamWriter sw = new StreamWriter(filePath, false))
{
sw.Write(csv);
}