C#后台制作之数据库(二、如何清除显示以及将数据库数据导出到excel表格文件中)
2013-04-14 17:30
1401 查看
前一篇主要是串口数据的接收,显示和存入数据库。但是这样在客户实际使用时还是很不方便。
现在要如下修改:先把数据先记录在datagridview的表格中,之后当单击“保存数据”时,再批量将数据存储到数据库中。若不想保存数据可以使用“清除显示”按钮。
“导出到excel表格”考虑将整个Access数据库的数据导出。最后还要实现对数据库进行日期管理,分日期操作。
首先修改了一个小地方: 通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。不太喜欢,把他去掉了。
dataGridView1.AllowUserToAddRows = false;//通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。
//如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。
这样接下来清除显示就不会报错了。如不加这句,会提示不能操作新加入数据。
清除显示如下:
在使用过程中还是出现这么两个问题:
1.我的timer1是在tebcontrol的“数据采集与测试”分页中,当我切换到tebcontrol的“数据存储与分析”分页时,timer1就停止了,串口发送数据也就停止了,没有新的数据传过来了。
2.同时,已经存在于数据库中的数据在Formload时会在dataGridView中显示出来,这样当数据库中存有很多数据时就要托动滚动条去找新数据了,而且还不好找。
暂时没找到好的办法,先把导出做了。
使用按钮
private void button5_Click(object sender, EventArgs e)
{
FormAC Form2 = new FormAC();
Form2.Show();
}
重新打开了一个窗口:
由于参考了这样就实现了导出。主要代码如下:
今天工作到此吧,留了两个问题,只能有空再解决了,话说又是星期一了!
现在要如下修改:先把数据先记录在datagridview的表格中,之后当单击“保存数据”时,再批量将数据存储到数据库中。若不想保存数据可以使用“清除显示”按钮。
“导出到excel表格”考虑将整个Access数据库的数据导出。最后还要实现对数据库进行日期管理,分日期操作。
首先修改了一个小地方: 通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。不太喜欢,把他去掉了。
dataGridView1.AllowUserToAddRows = false;//通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。
//如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。
这样接下来清除显示就不会报错了。如不加这句,会提示不能操作新加入数据。
清除显示如下:
private void button6_Click(object sender, EventArgs e) { while (dataGridView1.Rows.Count != 0) { dataGridView1.Rows.RemoveAt(0); } }
在使用过程中还是出现这么两个问题:
1.我的timer1是在tebcontrol的“数据采集与测试”分页中,当我切换到tebcontrol的“数据存储与分析”分页时,timer1就停止了,串口发送数据也就停止了,没有新的数据传过来了。
2.同时,已经存在于数据库中的数据在Formload时会在dataGridView中显示出来,这样当数据库中存有很多数据时就要托动滚动条去找新数据了,而且还不好找。
暂时没找到好的办法,先把导出做了。
使用按钮
private void button5_Click(object sender, EventArgs e)
{
FormAC Form2 = new FormAC();
Form2.Show();
}
重新打开了一个窗口:
由于参考了这样就实现了导出。主要代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class FormAC : Form { public FormAC() { InitializeComponent(); } public void AccessGuideJoinExcel(string Access, string AccTable, string Excel) { try { string tem_sql = "";//定义字符串 string connstr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Access + ";Persist Security Info=True";//记录连接Access的语句 System.Data.OleDb.OleDbConnection tem_conn = new System.Data.OleDb.OleDbConnection(connstr);//连接Access数据库 System.Data.OleDb.OleDbCommand tem_comm;//定义OleDbCommand类 tem_conn.Open();//打开连接的Access数据库 tem_sql = "select Count(*) From " + AccTable;//设置SQL语句,获取记录个数 tem_comm = new System.Data.OleDb.OleDbCommand(tem_sql, tem_conn);//实例化OleDbCommand类 int RecordCount = (int)tem_comm.ExecuteScalar();//执行SQL语句,并返回结果 //每个Sheet只能最多保存65536条记录。 tem_sql = @"select top 65535 * into [Excel 8.0;database=" + Excel + @".xls].[Sheet2] from 博达电池数据表";//记录连接Excel的语句 tem_comm = new System.Data.OleDb.OleDbCommand(tem_sql, tem_conn);//实例化OleDbCommand类 tem_comm.ExecuteNonQuery();//执行SQL语句,将数据表的内容导入到Excel中 tem_conn.Close();//关闭连接 tem_conn.Dispose();//释放资源 tem_conn = null; MessageBox.Show("导入完成"); } catch (Exception ex) { MessageBox.Show(ex.Message, "提示!"); } } public void GetTable(string Apath, ComboBox ComBox) { string connstr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Apath + ";Persist Security Info=True"; System.Data.OleDb.OleDbConnection tem_OleConn = new System.Data.OleDb.OleDbConnection(connstr); tem_OleConn.Open(); DataTable tem_DataTable = tem_OleConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); tem_OleConn.Close(); ComBox.Items.Clear(); for (int i = 0; i < tem_DataTable.Rows.Count; i++) { ComBox.Items.Add(tem_DataTable.Rows[i][2]); } if (ComBox.Items.Count > 0) ComBox.SelectedIndex = 0; } private void button1_Click(object sender, EventArgs e) { openFileDialog1.FileName = ""; if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = openFileDialog1.FileName; GetTable(textBox1.Text, comboBox1); } } private void button4_Click(object sender, EventArgs e) { AccessGuideJoinExcel(textBox1.Text, comboBox1.Text, textBox3.Text + "\\" + textBox4.Text); } private void button3_Click(object sender, EventArgs e) { folderBrowserDialog1.SelectedPath = ""; if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) textBox3.Text = folderBrowserDialog1.SelectedPath; } } }
今天工作到此吧,留了两个问题,只能有空再解决了,话说又是星期一了!
相关文章推荐
- C#中数据库数据如何导出至Excel表格
- 如何将C#中将TextBox的数据以及从数据库中查询得到的数据导出到Excel中
- C#后台制作之数据库(Access数据库+datagirdview控件显示+串口数据存储)
- SQL 数据的导入导出,对远程(MSsql,OracleAccess,)数据库的操作以及读取Excel,txt文件中的数据
- C#把数据写如EXCEL文件,以及如何创建EXCEL文件
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改
- 以实例说明如何使用C#从数据库中提取数据,按要求自动生成定制的Excel表格?
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- mysql 数据库导出表数据到Excel 以及Excel 科学计数法显示完整数据
- python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。
- 以实例说明如何使用C#从数据库中提取数据,按要求自动生成定制的Excel表格?[转]
- 【OPNET小问题】统计量显示收发数据数量不匹配以及如何导出统计量数据
- PHP从数据库导出数据到excel,无插件(解决中文以及法语乱码问题)
- NPOI 操作数据库中数据的导入导出(Excel.xls文件) 和null数据的处理。
- [VB.NET]100分求:如何从数据库取出数据并生成表格显示数据?
- JavaScript将页面表格数据导出为Excel、CSV格式文件(结合JQuery EasyUI的grid )
- 如何将数据库中数据导出Execl表格
- 把DataSet所有数据表导出到Excel表格文件(在前人基础上只是稍作了一下修改)
- C#将dataGridView中显示的数据导出到Excel(超实用版)