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();
}