C#用流实现DataGridView中数据Excel格式的导出,会将前面数据的0去掉,或自动变成科学计数形式

emailqjc 2012-07-19 06:21:51
我的代码如下:现在导出EXCEL的数据,会将前面数据的0去掉,或自动变成科学计数形式
public void dataGridViewToExcel(DataGridView dgv)
{

SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出 Excel 文件到";
saveFileDialog.ShowDialog();
if (saveFileDialog.ShowDialog() == DialogResult.Cancel)//如果选择提醒导出
return;
Stream myStream;
myStream = saveFileDialog.OpenFile();


//StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));

StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string str = "";


try
{
//写标题

for (int i = 0; i < dgv.ColumnCount; i++)
{

if (i > 0)
{

str += "\t";

}

str += dgv.Columns[i].HeaderText;

}


sw.WriteLine(str);

//写内容

for (int j = 0; j < dgv.Rows.Count; j++)
{

string tempStr = "";

for (int k = 0; k < dgv.Columns.Count; k++)
{

if (k > 0)
{

tempStr += "\t";

}

tempStr += dgv.Rows[j].Cells[k].Value.ToString();

}

sw.WriteLine(tempStr);

}

sw.Close();

myStream.Close();

}

catch (Exception ex)
{

MessageBox.Show(ex.ToString());

}

finally
{

sw.Close();

myStream.Close();

}
}
#endregion

...全文
432 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
GmHub 2014-07-24
  • 打赏
  • 举报
回复
问题是解决了,但是导出来的数据上都有="data",我对Excel不熟,不知道对后续Excel其他操作有没有影响!
暖枫无敌 2012-07-19
  • 打赏
  • 举报
回复
自己动手,丰衣足食!
zhui22222 2012-07-19
  • 打赏
  • 举报
回复
呵呵,求人不如求己啊
emailqjc 2012-07-19
  • 打赏
  • 举报
回复 2
自己搞定
public static void WriteExcel()
{
if (gridView.Rows.Count == 0)
{
MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
saveFileDialog2.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog2.FilterIndex = 0;
saveFileDialog2.RestoreDirectory = true;
//saveFileDialog2.CreatePrompt = true;
saveFileDialog2.Title = "导出文件保存路径";
saveFileDialog2.FileName = null;
saveFileDialog2.ShowDialog();
string FileName = saveFileDialog2.FileName;

if (FileName.Length != 0)
{
toolStripProgressBar1.Visible = true;
toolStripProgressBar1.Value = 0;
try
{
StreamWriter sw = new StreamWriter(FileName, false, Encoding.GetEncoding("gb2312"));
StringBuilder sb = new StringBuilder();

System.Data.DataTable dt = objSet.Tables[0];

for (int k = 0; k < dt.Columns.Count; k++)
{
sb.Append(@"=""" + dt.Columns[k].ColumnName.ToString() + @"""" + "\t");
}
sb.Append(Environment.NewLine);

for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
sb.Append(@"=""" + dt.Rows[i][j].ToString() + @"""" + "\t");
}
sb.Append(Environment.NewLine);//每写一行数据后换行
toolStripProgressBar1.Value += 100 / dt.Rows.Count;
}
sw.Write(sb.ToString());
sw.Flush();
sw.Close();//释放资源
MessageBox.Show("数据已经成功导出到:" + saveFileDialog2.FileName.ToString(), "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
toolStripProgressBar1.Value = 0;
toolStripProgressBar1.Visible = false;
}
}
}
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧