文档章节

将DataGridView里面的数据导入到Excel中

o
 osc_x4h57ch8
发布于 2018/04/24 14:16
字数 581
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

拉控键,创建一个简单的实例,如下图所示

(1)将数据库数据导入DataGridView中

代码如下所示

 1         private DataTable _dtInfo = null;
 2         private DataView _dvInfo = null;
 3         //private DataGridView dgvInfo = null;
 4         public Demo()
 5         {
 6             InitializeComponent();
 7         }
 8         private void Form1_Load(object sender, EventArgs e)
 9         {
10             _dtInfo = GetData();
11             _dvInfo = new DataView(_dtInfo, "", "", DataViewRowState.CurrentRows);
12             dataGridView1.DataSource = _dvInfo;
13         }
14         private void button1_Click(object sender, EventArgs e)
15         {
16             InitData();
17         }
18 
19         private void InitData()
20         {
21             try
22             {
23                 if (_dtInfo != null)
24                 {
25                     _dtInfo.Rows.Clear();
26                 }
27                 string con, sql;
28                 con = @"Data Source=。 ;Initial Catalog=FirstDemo;User ID=sa;Pwd=123456";
29                 sql = "select * from Student";
30                 SqlConnection mycon = new SqlConnection(con);
31                 mycon.Open();
32                 SqlDataAdapter myda = new SqlDataAdapter(sql, con);
33                 DataSet myds = new DataSet();
34                 myda.Fill(_dtInfo);
35                 ////myda.Fill(myds, "test1");
36                 _dvInfo = new DataView(_dtInfo, "", "", DataViewRowState.CurrentRows);
37 
38                 dataGridView1.DataSource = _dvInfo;// myds.Tables["test1"];
39                 dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;//选定一行
40                 dataGridView1.ReadOnly = true;//不可编辑
41                 dataGridView1.AllowUserToAddRows = false;//最后一行不显示
42                 dataGridView1.RowHeadersVisible = false;//第一列空白的不显示
43                 mycon.Close();
44             }
45             catch (Exception ex)
46             {
47                 MessageBox.Show("错误信息:" + ex.Message, "出现错误");
48             }
49         }
50 
51        
52         private DataTable GetData()
53         {
54             DataTable dtInfo = new DataTable();
55 
56             return dtInfo;
57         }
将数据库数据显示在DataGridView上

 

(2)将DataGridView上的数据导出生成为一个Excel文件

代码如下所示:

 1  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
 2         {
 3 
 4         }
 5         /// <summary>
 6         /// 将数据导入到Excel文件中
 7         /// </summary>
 8         /// <param name="sender"></param>
 9         /// <param name="e"></param>
10         private void btnExport_Click(object sender, EventArgs e)
11         {
12             string fileName = DateTime.Now.ToString("yyyyMMddhhmmss");
13             string saveFileName = "";
14             SaveFileDialog saveDialog = new SaveFileDialog();
15             saveDialog.DefaultExt = "xlsx";
16             saveDialog.Filter = "Excel文件|*.xlsx";
17             saveDialog.FileName = fileName;
18             saveDialog.ShowDialog();
19             saveFileName = saveDialog.FileName;
20             if (saveFileName.IndexOf(":") < 0) return; //被点了取消
21             Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
22             if (xlApp == null)
23             {
24                 MessageBox.Show("无法创建Excel对象,您的电脑可能未安装Excel");
25                 return;
26             }
27             Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
28             Microsoft.Office.Interop.Excel.Workbook workbook =
29                         workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
30             Microsoft.Office.Interop.Excel.Worksheet worksheet =
31                         (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 
32                                                                                          //写入标题             
33             for (int i = 0; i < dataGridView1.ColumnCount; i++)
34             { worksheet.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText; }
35             //写入数值
36             for (int r = 0; r < dataGridView1.Rows.Count; r++)
37             {
38                 for (int i = 0; i < dataGridView1.ColumnCount; i++)
39                 {
40                     worksheet.Cells[r + 2, i + 1] = dataGridView1.Rows[r].Cells[i].Value;
41                 }
42                 System.Windows.Forms.Application.DoEvents();
43             }
44             worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
45             MessageBox.Show(fileName + "资料保存成功", "提示", MessageBoxButtons.OK);
46             if (saveFileName != "")
47             {
48                 try
49                 {
50                     workbook.Saved = true;
51                     workbook.SaveCopyAs(saveFileName);  //fileSaved = true;                 
52                 }
53                 catch (Exception ex)
54                 {//fileSaved = false;                      
55                     MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
56                 }
57             }
58             xlApp.Quit();
59             GC.Collect();//强行销毁       
60         }
将DataGridView上的数据导入到Excel文件

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

asp.net core之NLog

NuGet添加 NLog.Web.AspNetCore。 <PackageReference Include="Microsoft.AspNetCore.App" /> 添加配置文件 新建一个文件nlog.config(建议全部小写,linux系统中要注意), 并右键点击其属性......

一介草民Coder
53分钟前
23
0
.NET中的struct和class有什么区别? - What's the difference between struct and class in .NET?

问题: .NET中的struct和class有什么区别? 解决方案: 参考一: https://stackoom.com/question/3OT/NET中的struct和class有什么区别 参考二: https://oldbug.net/q/3OT/What-s-the-differ...

富含淀粉
今天
23
0
android:layout_weight是什么意思? - What does android:layout_weight mean?

问题: I don't understand how to use this attribute. 我不明白如何使用这个属性。 Can anyone tell me more about it? 谁能告诉我更多关于它的事情? 解决方案: 参考一: https://stacko...

javail
今天
17
0
CSS背景不透明度[重复] - CSS Background Opacity [duplicate]

问题: This question already has an answer here: 这个问题已经在这里有了答案: How do I give text or an image a transparent background using CSS? 如何使用CSS为文本或图像提供透明背...

fyin1314
今天
31
0
node http 获取gb2312网页如何转为utf8

最初,我想当然认为是下述做法,但被证明是错误的 const http = require('http'), iconv = require('iconv-lite');const url = 'http://xxx';http.get(url, function(res) { var bo......

高延
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部