首页 新闻 搜索 专区 学院

c#(WinForm)导出数据于Excel模板(先出数据再生成柱形图表)

0
悬赏园豆:20 [待解决问题]

c#(WinForm)导出数据于Excel模板(先出数据再生成柱形图表)
   
  问题:将导出的数据生成柱形图表,因为导出的数据行数不确定 ,故图表会跟着动态变化(主要是动态生成图表不是导出数据),当然 越具体越好。
   
  若能解答,不胜感谢!

li_wentao的主页 li_wentao | 初学一级 | 园豆:180
提问于:2011-10-26 21:01
< >
分享
所有回答(2)
0

 和我问的是同一个问题。不知道弄。请高手赐教

乃馨 | 园豆:159 (初学一级) | 2013-01-18 14:17

相隔一年多了,楼主知道弄了吧。能否指点一下。

支持(0) 反对(0) 乃馨 | 园豆:159 (初学一级) | 2013-01-18 14:20
0

给你个方法,这个是将DataGridView控件当前显示的所有行导出到Excel的  格式不会乱

#region DateGridView导出到csv格式的Excel
/// <summary>
/// 常用方法,列之间加\t,一行一行输出,此文件其实是csv文件,不过默认可以当成Excel打开。
/// </summary>
/// <remarks>
/// using System.IO;
/// </remarks>
/// <param name="dgv"></param>
private void DataGridViewToExcel(DataGridView dgv)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Execl files (*.xls)|*.xls";
dlg.FilterIndex = 0;
dlg.RestoreDirectory = true;
dlg.CreatePrompt = true;
dlg.Title = "保存为Excel文件";

if (dlg.ShowDialog() == DialogResult.OK)
{
Stream myStream;
myStream = dlg.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string columnTitle = "";
try
{
//写入列标题
for (int i = 0; i < dgv.ColumnCount; i++)
{
if (i > 0)
{
columnTitle += "\t";
}
columnTitle += dgv.Columns[i].HeaderText;
}
sw.WriteLine(columnTitle);

//写入列内容
for (int j = 0; j < dgv.Rows.Count; j++)
{
string columnValue = "";
for (int k = 0; k < dgv.Columns.Count; k++)
{
if (k > 0)
{
columnValue += "\t";
}
if (dgv.Rows[j].Cells[k].Value == null)
columnValue += "";
else
columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();
}
sw.WriteLine(columnValue);
}
sw.Close();
myStream.Close();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
}
#endregion

SurvivalLin | 园豆:169 (初学一级) | 2015-12-01 17:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册