如何将.net中DataGridView中的数据导出到Excel文本(是在windows窗体中)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将.net中DataGridView中的数据导出到Excel文本(是在windows窗体中)相关的知识,希望对你有一定的参考价值。
private void button2_Click(object sender, EventArgs e)string strconn = "Data Source=JUKINB-SERVER;Initial Catalog=TxData;Persist Security Info=True;User ID=sa";
SqlConnection conn = new SqlConnection(strconn);
string strcom = "select * from fzje";
SqlDataAdapter sqlda = new SqlDataAdapter(strcom, conn);
DataSet sqlds = new DataSet();
sqlda.Fill(sqlds, "table1");
sqlds.Tables["table1"].AcceptChanges();
this.Cursor = Cursors.WaitCursor;
Excel.Application myExcel = new Excel.Application();
myExcel.Application.Workbooks.Add(true);
myExcel.Visible = true;
//Object Date[ds.Tables["CurrentTable"].Rows.Count][ds.Tables["CurrentTable"].Columns.Count];
//生成标题
for (int i = 0; i < sqlds.Tables["table1"].Columns.Count; i++)
myExcel.Cells[2, i + 1] = sqlds.Tables["table1"].Columns[i].Caption;
//填充数据
for (int i = 0; i < sqlds.Tables["table1"].Rows.Count; i++)
for (int j = 0; j < sqlds.Tables["table1"].Columns.Count; j++)
if (sqlds.Tables["table1"].Rows[i][j].GetType() == typeof(System.String))
myExcel.Cells[i + 3, j + 1] = "'" + sqlds.Tables["table1"].Rows[i][j].ToString();
else
myExcel.Cells[i + 3, j + 1] = sqlds.Tables["table1"].Rows[i][j].ToString();
this.Cursor = Cursors.Default;
MessageBox.Show("导出成功! ", "恭喜", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
连接字符串自己改一下,这个方法可能速度不是很高! 参考技术A 楼上回答的很详细了
呵呵
我不补充了
在 vb.net 的 datagridview 中添加行号
【中文标题】在 vb.net 的 datagridview 中添加行号【英文标题】:Add row number in datagridview in vb.net 【发布时间】:2012-12-23 04:41:54 【问题描述】:我正在 Vb.Net 中开发 Windows 应用程序。现在有一种表格,我想在其中打印网格中显示的记录。通过单击网格中的单元格标题可以对网格进行排序,并且应该按照网格中的显示进行打印。
所以我对如何维护网格中的行号有点困惑。当网格填充和分配数据源时,我最初可以从数据库中获取行号。但是当用户单击任何单元格标题并对该列进行排序时,行号就会更改。那个时候我很难保持行号。
谁能告诉我如何在网格中维护行号?
提前致谢。
【问题讨论】:
你使用什么样的数据库? 您不想更改排序的顺序..? @M.NourBerro 我们使用的是 SQL Server 2008。 @VishalSuthar no 当我从网格打印记录时,它应该在排序或不排序后打印与网格中的显示相同。 【参考方案1】:我猜你需要这个:
注意:此代码是 C#,因此您可以将其转换为 VB.Net
代表:
this.dgvUserDetails.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dgvUserDetails_RowPostPaint);
事件:
private void dgvUserDetails_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
using (SolidBrush b = new SolidBrush(dgvUserDetails.RowHeadersDefaultCellStyle.ForeColor))
e.Graphics.DrawString((e.RowIndex + 1).ToString(), e.InheritedRowStyle.Font, b, e.RowBounds.Location.X + 10, e.RowBounds.Location.Y + 4);
输出
【讨论】:
!很不错?如何将 RowHeader Backcolor 更改为您当前拥有的。? @kashif 或者您可以借助以下方法:_dataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.Blue; _dataGridView.EnableHeadersVisualStyles = false; 感谢您向我介绍了这么好的视觉样式。我从您提到的网站安装它并使用 office2010 皮肤更改了我的项目样式。现在我的应用程序看起来比以前的应用程序好很多倍。几天后,它开始向我要执照。你能告诉我你是从哪里下载的破解版吗??我下载了 v2.4.50000.1 版本,并没有从谷歌找到任何免费的密钥。它值 250 美元等于 25000 卢比,我什至想不到。如果您能以任何方式解决我的注册问题,我会非常高兴 您可以从这个网站将代码从 C# 转换为 VB.NET:converter.telerik.com【参考方案2】:grid.Rows(e.RowIndex).HeaderCell.Value = CStr(e.RowIndex + 1)
复制代码 enter image description here
【讨论】:
我们并不期望每个答案都是完美的,但拼写、标点和语法正确的答案更容易阅读。他们也往往更频繁地获得投票。请记住,您随时可以返回并编辑您的答案以改进它以上是关于如何将.net中DataGridView中的数据导出到Excel文本(是在windows窗体中)的主要内容,如果未能解决你的问题,请参考以下文章
需要一些关于将数据放入 vb.Net 中的 DataGridView 的建议
如何在 VB.NET 中将 DataGridView 导出为 Excel 格式