【发布时间】:2018-08-02 12:22:54
【问题描述】:
我正在尝试使用以下代码将我的 DataGridView 导出到 csv 文件:
private void saveToCsv(DataGridView dGV, string filename)
{
if (dGV.RowCount > 0)
{
DataTable dt = new DataTable();
dt = dGV.DataSource as DataTable;
int d = dt.Columns.Count;
int c = dt.Rows.Count;
foreach (var column in dt.Columns.Cast<DataColumn>().ToArray())
{
if (dt.AsEnumerable().All(dr => dr.IsNull(column)))
d--;
}
string stOutput = "";
DataGridViewRow ds = new DataGridViewRow();
StreamWriter swOut = new StreamWriter(filename);
//write header rows to csv
for (int i = 0; i <= d - 1; i++)
{
if (i > 0)
{
swOut.Write(",");
}
swOut.Write(dGV.Columns[i].HeaderText);
}
swOut.WriteLine();
//write DataGridView rows to csv
for (int j = 0; j <= c - 1; j++)
{
if (dt.Rows[j].IsNull)
if (j > 0)
{
swOut.WriteLine();
}
ds = dGV.Rows[j];
for (int i = 0; i <= d - 1; i++)
{
if (i > 0)
{
swOut.Write(",");
}
stOutput = ds.Cells[i].Value.ToString();
//replace comma's with spaces
stOutput = stOutput.Replace(',', ' ');
//replace embedded newlines with spaces
stOutput = stOutput.Replace(Environment.NewLine, " ");
swOut.Write(stOutput);
}
}
swOut.Close();
}
MessageBox.Show("Data successfully saved");
}
但输出是这样的:
0.512,45,tested_negative 0.966,33,tested_negative 0.42,35,tested_negative 0.665,46,tested_positive 0.329,29,tested_negative ,, ,, ,, ,, ,, ,, ,, ,,空行也被导出。
我该如何解决这个问题?
【问题讨论】:
-
为什么要单独写逗号和数据,你只是迭代和 var
data= string.Format("{0},{1}", first, second); -
if (dt.Rows[j].IsNull) continue;
标签: c#