如何导出指定名称的csv文件
本文关键字:csv 文件 定名称 何导出 | 更新日期: 2023-09-27 17:53:02
我想按特定名称从数据库导出csv文件,例如患者的数据包含"病房名称"字段为"GENERAL Ward (FEMALE)",则生成的文件名必须为"GENF.csv"。我试着用开关箱,但它不起作用。如有更改,请编辑。
谢谢。
代码如下:
//Function declares methods to export
public void ExportAll() {
try {
int i = 0;
for (int icount = 0; icount <= 400; icount++) {
object o = saiNathHospitalDataSet.Tables["PatientTable"].Rows[i]["WARD NAME"];
object obj = saiNathHospitalDataSet.Tables["PatientTable"].Rows[i]["PTNAME"];
int swichexpression = 9;
object a = "GENERAL WARD (FEMALE)";
object b = "GENERAL WARD (MALE)";
object c = "RECOVERY";
object d = "SEMI DELUXE 02";
object e = "SEMI DELUXE 05";
object f = "SEMI DELUXE 06";
object g = "ICU";
object h = "SEMI SPECIAL 03";
object j = "SEMI SPECIAL 01";
switch (swichexpression) {
case 1:
if (o == a) {
// o = "GENF";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "GENF.csv");
}
break;
case 2:
if (o == b) {
// o = "GENM";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "GENM.csv");
}
break;
case 3:
if (o == c) {
//o = "REC";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "REC.csv");
}
break;
case 4:
if (o == d) {
// o = "SDELX02";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SDELX02.csv");
}
break;
case 5:
if (o == e) {
// o = "SDELX05";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SDELX05.csv");
}
break;
case 6:
if (o == f) {
// o = "SDELX06";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SDELX06.csv");
}
break;
case 7:
if (o == g) {
//o = "ICU";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "ICU.csv");
}
break;
case 8:
if (o == h) {
//o = "SSPEC03";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SSPEC03.csv");
}
break;
case 9:
if (o == j) {
//string z = "SSPEC01";
DataExport("select * from PatientTable where [WARD NAME] =" + o + "", "SSPEC01.csv");
}
break;
}
//DataExport("select * from PatientTable", "" + s + ".csv");
i++;
}
}
catch {
}
}
编辑::数据导出方法,
public void DataExport(string SelectQuery, string fileName)
{
try
{
using (var dt = new DataTable())
{
using (var da = new SqlDataAdapter(SelectQuery, con))
{
da.Fill(dt);
var header = String.Join(
",",
dt.Columns.Cast<DataColumn>().Select(dc => dc.ColumnName));
var rows =
from dr in dt.Rows.Cast<DataRow>()
select String.Join(
",",
from dc in dt.Columns.Cast<DataColumn>()
let t1 = Convert.IsDBNull(dr[dc]) ? "" : dr[dc].ToString()
let t2 = t1.Contains(",") ? String.Format("'"{0}'"", t1) : t1
select t2);
using (var sw = new StreamWriter(txtreceive.Text + "''" + fileName))
{
sw.WriteLine(header);
foreach (var row in rows)
{
sw.WriteLine(row);
}
sw.Close();
}
}
}
}
catch { }
}
你的switch case是不正确的,现在你正在制作switch case和if语句的混合,但你的switch case总是会转到case 9,你实际上不需要整数的switch case。您需要将其更改为如下内容:
string o = saiNathHospitalDataSet.Tables["PatientTable"].Rows[i]["WARD NAME"];
const string a = "GENERAL WARD (FEMALE)";
const string b = "GENERAL WARD (MALE)";
const string c = "RECOVERY";
const string d = "SEMI DELUXE 02";
const string e = "SEMI DELUXE 05";
const string f = "SEMI DELUXE 06";
const string g = "ICU";
const string h = "SEMI SPECIAL 03";
const string j = "SEMI SPECIAL 01";
switch (o)
{
case (a):
//Do something
break;
case (b):
//Do something
break;
default:
//Do something
break;
}
编辑:如果您想为每个病房的每个病人导出一个文件,您必须将导出方法的foreach循环更改为如下内容:
foreach (var row in rows)
{
using (var sw = new StreamWriter(txtreceive.Text + "''" + "Some variable to identify different patients" + filename))
{
sw.WriteLine(header);
sw.WriteLine(row);
}
}
假设每行代表一个患者,则需要每行创建一个文件。