首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

VB.Net中怎么调用Access导出功能,把Access数据库中的表导出到Excel文件

2011-12-12 
VB.Net中如何调用Access导出功能,把Access数据库中的表导出到Excel文件?我用下面的方法把表中数据导出到Ex

VB.Net中如何调用Access导出功能,把Access数据库中的表导出到Excel文件?
我用下面的方法把表中数据导出到Excel文件,但是速度很慢,(我的表29列大概3000条数据,导出时必须保持文本属性。)要4-5分钟。数据源是Access数据库,我用Access自带的导出功能导出Excel大概只要10秒,各位知道如何在VB.Net     中直接调用Access的导出功能,或则该如何改写代码,使其导出数据更快呢?谢谢!!!    
代码如下:    
  Public     sub     exportAlltoExcel()        
                              Me.Cursor     =     Cursors.WaitCursor    
                              。。。。。。省略    
                              Dim     wb     As     Excel.Workbook     =     exlApp.Workbooks.Add    
                              Dim     ws     As     Excel.Worksheet     =     wb.Worksheets(1)    
                              Dim     rCount     As     Integer     =     dataset1.Tables( "tableName ").Rows.Count    
                              ws.Range( "a1:ac "     &     rCount     +     1).NumberFormatLocal     =     "@ "    
                              Try    
                                     
                                              For     x     As     Integer     =     0     To     rCount     -     1    
                                                              For     y     As     Integer     =     1     To     29    
                                                                              ws.Cells(x     +     1,     y)     =     dataset1.Tables( "tablename ").Rows(x).Item(y     -     1)    
                                                              Next    
                                                                 
                                              Next    


                              Catch     e1     As     Exception    
                                              MsgBox(e1.Message)    
                              Finally    
                                 
                                              wb.Application.Visible     =     True    
                                              wb.Parent.Windows(1).Visible     =     True    
                                              Me.Cursor     =     Cursors.Default    
                              End     Try    
 
              End     sub

[解决办法]
http://dotnet.aspx.cc/article/421ac2d7-7c87-4063-a14b-c6f7c7ffbf43/read.aspx
[解决办法]
我是用sql语句实现的
导出到excel操作。
OleDbConnection conExcel = new OleDbConnection();
try
{
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.Filter = ( "Excel 文件(*.xls)|*.xls ");//指定文件后缀名为Excel 文件。
if (saveFile.ShowDialog() == DialogResult.OK)
{
string filename = saveFile.FileName;
if (System.IO.File.Exists(filename))
{
System.IO.File.Delete(filename);//如果文件存在删除文件。
}
int index = filename.LastIndexOf( "\\ ");//获取最后一个\的索引
filename = filename.Substring(index + 1);//获取excel名称(新建表的路径相对于SaveFileDialog的路径)
//select * into 建立 新的表。
//[[Excel 8.0;database= excel名].[sheet名] 如果是新建sheet表不能加$,如果向sheet里插入数据要加$. 
//sheet最多存储65535条数据。
string sql = "select top 65535 * into [Excel 8.0;database= " + filename + "].[用户表] from 用户表 ";
  conExcel.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source= " + Application.StartupPath + "\\Appdata.mdb ";//将数据库放到debug目录下。
OleDbCommand com = new OleDbCommand(sql, conExcel);
conExcel.Open();
com.ExecuteNonQuery();
MessageBox.Show( "导出数据成功 ", "导出数据 ", MessageBoxButtons.OK, MessageBoxIcon.Information );
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conExcel.Close();
}


热点排行