C# 将Access中的数据导入到Excel

wanzong1 2014-09-19 08:33:28
我现在要把接近一个G的Access数据库文件导出到Excel中。
Access中的数据只有四列,但是导出到Excel中要重新排列。将一列的值作为工作表sheet的名称(大约几十个),另外一列值作为Excel的列名(去除重复的大约100多列)。将剩下两列值分别放在相应的列下。
我自己写了一个程序,但处理数据太慢了。
不知道各位大神有什么好的建议?
...全文
529 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
babala_2804225217 2014-09-20
  • 打赏
  • 举报
回复
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); } }
babala_2804225217 2014-09-20
  • 打赏
  • 举报
回复
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); } }
wanzong1 2014-09-19
  • 打赏
  • 举报
回复
我感觉自己出错的地方在读取Access,然后按照要求存入新建的DataTable中。我的dataTable字段名是某一列的值,然后将其他列的值相应的写入该字段。我是一条一条数据取的,太麻烦了,所以耗时间
wanzong1 2014-09-19
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
你的程序慢在哪里呢?具体问题具体分析下。一次性取数据,在内存中计算,最后写入,基本过程就这个。
我分了好多次读取数据,重复的连接、关闭数据库。可能慢在这个地方吧。 接近1G的数据一次性读取放在内存中计算合理吗? 我的程序逻辑是,分次以不同的条件查询读取Access数据库中的数据,然后存在DataTable中,存完一个Table,就生成一个Excel文件,继续下一次的读取和存入。 这种方法逻辑简单,但是太费时间了,怎么改进比较好?谢谢
aaa2742 2014-09-19
  • 打赏
  • 举报
回复
建议使用EEPlus。
全栈极简 2014-09-19
  • 打赏
  • 举报
回复
你的程序慢在哪里呢?具体问题具体分析下。一次性取数据,在内存中计算,最后写入,基本过程就这个。

110,983

社区成员

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

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

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