解决方案 »

  1.   

    我分了好多次读取数据,重复的连接、关闭数据库。可能慢在这个地方吧。
    接近1G的数据一次性读取放在内存中计算合理吗?
    我的程序逻辑是,分次以不同的条件查询读取Access数据库中的数据,然后存在DataTable中,存完一个Table,就生成一个Excel文件,继续下一次的读取和存入。
    这种方法逻辑简单,但是太费时间了,怎么改进比较好?谢谢
      

  2.   

    我感觉自己出错的地方在读取Access,然后按照要求存入新建的DataTable中。我的dataTable字段名是某一列的值,然后将其他列的值相应的写入该字段。我是一条一条数据取的,太麻烦了,所以耗时间
      

  3.   

    C#把access数据导入到Excel示例
      private void btn_Read_Click(object sender, EventArgs e)
            {
                try
                {
                    string P_str_Con = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Access.Text + ";Persist Security Info=True";//记录连接Access的语句
                    string P_str_Sql = "";//存储要执行的SQL语句
                    OleDbConnection oledbcon = new OleDbConnection(P_str_Con);//实例化OLEDB连接对象
                    OleDbCommand oledbcom;//定义OleDbCommand对象
                    oledbcon.Open();//打开数据库连接
                    //向Excel工作表中导入数据
                    P_str_Sql = @"select * into [Excel 8.0;database=" + txt_Excel.Text + "]." + "[" + cbox_Table.Text + "] from " + cbox_Table.Text + "";//记录连接Excel的语句
                    oledbcom = new System.Data.OleDb.OleDbCommand(P_str_Sql, oledbcon);//实例化OleDbCommand对象
                    oledbcom.ExecuteNonQuery();//执行SQL语句,将数据表的内容导入到Excel中
                    oledbcon.Close();//关闭数据库连接
                    oledbcon.Dispose();//释放资源
                    MessageBox.Show("导入成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }//CodeGo.net/
                catch
                {
                    MessageBox.Show(cbox_Table.Text + "工作表已经存在,请选择其他数据表!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
      

  4.   

    C#把access数据导入到Excel示例
      private void btn_Read_Click(object sender, EventArgs e)
            {
                try
                {
                    string P_str_Con = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Access.Text + ";Persist Security Info=True";//记录连接Access的语句
                    string P_str_Sql = "";//存储要执行的SQL语句
                    OleDbConnection oledbcon = new OleDbConnection(P_str_Con);//实例化OLEDB连接对象
                    OleDbCommand oledbcom;//定义OleDbCommand对象
                    oledbcon.Open();//打开数据库连接
                    //向Excel工作表中导入数据
                    P_str_Sql = @"select * into [Excel 8.0;database=" + txt_Excel.Text + "]." + "[" + cbox_Table.Text + "] from " + cbox_Table.Text + "";//记录连接Excel的语句
                    oledbcom = new System.Data.OleDb.OleDbCommand(P_str_Sql, oledbcon);//实例化OleDbCommand对象
                    oledbcom.ExecuteNonQuery();//执行SQL语句,将数据表的内容导入到Excel中
                    oledbcon.Close();//关闭数据库连接
                    oledbcon.Dispose();//释放资源
                    MessageBox.Show("导入成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }//CodeGo.net/
                catch
                {
                    MessageBox.Show(cbox_Table.Text + "工作表已经存在,请选择其他数据表!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }