急啊,怎么样把WINFORM中的datagridview导出成Excel文件.

yanglg 2007-12-21 09:19:05
急啊,怎么样把WINFORM中的datagridview导出成Excel文件.
希望各位大侠给出能用的源码!
谢谢
...全文
286 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
苏良辰 2007-12-21
  • 打赏
  • 举报
回复
有二种方法解决:
一:
像楼上说的用第三方控件,或,自己建一个Execl.applicationClass() 然后freach datagrid
存入workSheet,再转存
二:
把execel文件当数据库来使用,
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
......
这时,你需要掉前建一个execel文件,这很容易解决的

完整代码,我就不写了,网上多的是,baidu一下,再google一下,就一大把了
大宇_ 2007-12-21
  • 打赏
  • 举报
回复
用这种方式处理导出Excel

public static void ExeclReport(DataGridView _Grid)
{
SaveFileDialog FileDialog = new SaveFileDialog();
FileDialog.Filter = "Excel (*.xls)|*.xls";
FileDialog.FilterIndex = 1;
FileDialog.RestoreDirectory = true;
if (FileDialog.ShowDialog() == DialogResult.OK)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<?xml version='1.0'?><NewDataSet/>");
for (int i =0; i < _Grid.Rows.Count; i++)
{
XmlElement xel = doc.CreateElement("Sheet1");
string innerxml = null;
for (int z = 0; z < _Grid.Columns.Count; z++)
{
if (_Grid.Columns[z].Width > 0)
{
string Caption = _Grid.Columns[z].HeaderText;
System.Collections.IEnumerator myEnumerator = Caption.GetEnumerator();
while ((myEnumerator.MoveNext()) && (myEnumerator.Current != null))
{
char _user = (char)myEnumerator.Current;
if (char.IsPunctuation(_user))
{
Caption=Caption.Replace(_user.ToString(), string.Empty);
}
if (char.IsSeparator(_user))
{
Caption=Caption.Replace(_user.ToString(), string.Empty);
}
}
innerxml += string.Format("<{0}>{1}</{0}>", Caption, _Grid[i,z].Value.ToString());
}
}
xel.InnerXml =innerxml;
doc.DocumentElement.AppendChild((XmlNode)xel);
}
doc.Save(FileDialog.FileName);
}
}
kbryant 2007-12-21
  • 打赏
  • 举报
回复
先添加引用Office,Excel

Excel.Application excelApp=new Excel.ApplicationClass();
Excel.Workbook excelBook;
Excel.Worksheet excelWorkSheet;//Excel中的sheet
Excel.Range range;//单元格
excelBook=excelApp.Workbooks.Open(路径, "..... ");
jiatong1981 2007-12-21
  • 打赏
  • 举报
回复
也可以从dgv的数据源入手 使用sql语句来操作excel

例如:



string strCmd = string.Empty;
conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=No';" + "Data Source= " + @"d:\test.xls");
cmd = new OleDbCommand();
cmd.Connection = conn;


conn.Open();
strCmd = "create Table [Sheet1](";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
strCmd += "[" + dc.ColumnName + "] nvarchar(20),";
}
strCmd = strCmd.Trim().Substring(0, strCmd.Length - 1);
strCmd += ")";
cmd.CommandText = strCmd;

cmd.ExecuteNonQuery();

foreach (DataRow dr in ds.Tables[0].Rows)
{
if (dr.RowState != System.Data.DataRowState.Deleted)
{
strCmd = "insert into [Sheet1] values(";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
strCmd += "'" + dr[dc.ColumnName].ToString() + "',";
}

strCmd = strCmd.Substring(0, strCmd.Length - 1);
strCmd += ")";

cmd.CommandText = strCmd;

cmd.ExecuteNonQuery();


}
}
conn.Close();
taiyangyu119 2007-12-21
  • 打赏
  • 举报
回复
把excel的com组件加入程序,加载命名空间,然后直接可以使用了
Eddie005 2007-12-21
  • 打赏
  • 举报
回复
datagridview导出成Excel文件并没有什么直接简易的方法

要么就是调用Excel类库,逐行甚至逐格地写Excel文件;

要么可以考虑使用一些第三方的表格控件,例如FarPoint Spread控件,他就直接提供了SaveExcel()方法

110,536

社区成员

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

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

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