过江的博客
posts - 157, comments - 187, trackbacks - 16, articles - 1
博客园
::
首页
::
新随笔
:: ::
订阅
::
管理
用DTS从SQL导出数据到EXCEL
Posted on 2007-04-09 18:57
过江
阅读(229)
评论(0)
编辑
收藏
所属分类:
EXCEL、WORD与SQL
完整的代码如下:
using
System;
using
System.Data;
using
System.Collections;
using
System.Data.SqlClient;
using
System.IO;
namespace
DtsExcel
{
//
****************************
//
Create by chx of Telegnosis
//
2007-3
//
****************************
/**/
///
<summary>
///
通过Dts把SQL数据库的数据导入到EXCEL
///
</summary>
///
public
class
AppExportData
{
//
DTS包对象
public
DTS.Package2Class ObjDTS;
//
源文件路径
private
string
dataBase;
//
目标文件路径
private
string
strDestinationFilePath;
//
导出数据的SQL语句
private
string
strSQL;
//
目标表名
private
string
strTableName;
//
得到目标列名
private
ArrayList arrDestinationColumns;
//
得到源数据列名
private
ArrayList arrSourceColumns;
//
用户名
private
string
connectionString;
//
SQL服务器地址
private
string
server;
/**/
///
<summary>
///
数据库连接字符
///
</summary>
public
string
Server
{
get
{
return
server;
}
set
{
server
=
value;
}
}
/**/
///
<summary>
///
数据库连接字符
///
</summary>
public
string
ConnectionString
{
get
{
return
connectionString;
}
set
{
connectionString
=
value;
}
}
私有属性
#region
私有属性
private
ArrayList SourceColumns
{
get
{
return
arrSourceColumns;
}
set
{
arrSourceColumns
=
value;
}
}
/**/
///
<summary>
///
得到目标列名
///
</summary>
private
ArrayList DestinationColumns
{
get
{
return
arrDestinationColumns;
}
set
{
arrDestinationColumns
=
value;
}
}
#endregion
公共属性
#region
公共属性
/**/
///
<summary>
///
目标表名
///
</summary>
public
string
TableName
{
get
{
return
strTableName;
}
set
{
strTableName
=
value;
}
}
/**/
///
<summary>
///
导出数据的SQL语句
///
</summary>
public
string
SQL
{
get
{
return
strSQL;
}
set
{
strSQL
=
value;
}
}
/**/
///
<summary>
///
源文件所在的路径
///
</summary>
public
string
DataBase
{
get
{
return
dataBase;
}
set
{
dataBase
=
value;
}
}
/**/
///
<summary>
///
目标文件所在的路径
///
</summary>
public
string
DestinationFilePath
{
get
{
return
strDestinationFilePath;
}
set
{
strDestinationFilePath
=
value;
}
}
#endregion
构造函数
#region
构造函数
/**/
///
<summary>
///
构造函数
///
</summary>
public
AppExportData(
string
StrDesPath,
string
TableName,
string
StrSql,
string
ConnectionString)
{
strTableName
=
"
结果
"
;
arrDestinationColumns
=
new
ArrayList();
arrSourceColumns
=
new
ArrayList();
string
[] str
=
ConnectionString.Split(
new
char
[]
{
'
;
'
}
);
string
[] strserver
=
str[
0
].Split(
new
char
[]
{
'
=
'
}
);
server
=
strserver[
1
];
string
[] struid
=
str[
1
].Split(
new
char
[]
{
'
=
'
}
);
string
[] strdatabase
=
str[
3
].Split(
new
char
[]
{
'
=
'
}
);
dataBase
=
strdatabase[
1
];
dataBase
=
DataBase;
strDestinationFilePath
=
StrDesPath;
CreateDity(StrDesPath);
strTableName
=
TableName;
strSQL
=
StrSql;
connectionString
=
ConnectionString;
server
=
Server;
}
#endregion
创建文件夹
#region
创建文件夹
/**/
///
<summary>
///
创建文件夹
///
</summary>
///
<param name="Path"></param>
public
void
CreateDity(
string
Path)
{
try
{
if
(
!
File.Exists(Path))
{
string
[] dirty
=
Path.Split(
new
char
[]
{
'
\\
'
}
);
string
path
=
dirty[
0
];
for
(
int
i
=
1
;i
<
dirty.Length
-
1
;i
++
)
{
path
+=
"
\\
"
+
dirty[i];
Directory.CreateDirectory(path);
}
}
}
catch
(Exception ex)
{
throw
(ex);
}
}
#endregion
导出的全过程
#region
导出的全过程
public
bool
ExportData()
{
try
{
ObjDTS
=
new
DTS.Package2Class();
if
(
this
.arrDestinationColumns.Count
==
0
||
this
.arrSourceColumns.Count
==
0
)
{
try
{
this
.GetColumns();
}
catch
(Exception ex)
{
throw
(ex);
}
}
//
新建一个新的DTS包,设置它的属性
ObjDTS.Name
=
"
新建包
"
;
ObjDTS.Description
=
"
DTS 包描述
"
;
ObjDTS.WriteCompletionStatusToNTEventLog
=
false
;
ObjDTS.FailOnError
=
false
;
ObjDTS.PackagePriorityClass
=
( DTS.DTSPackagePriorityClass )
2
;
ObjDTS.MaxConcurrentSteps
=
4
;
ObjDTS.LineageOptions
=
0
;
ObjDTS.UseTransaction
=
true
;
ObjDTS.TransactionIsolationLevel
=
( DTS.DTSIsolationLevel )
4096
;
ObjDTS.AutoCommitTransaction
=
true
;
ObjDTS.RepositoryMetadataOptions
=
0
;
ObjDTS.UseOLEDBServiceComponents
=
true
;
ObjDTS.LogToSQLServer
=
false
;
ObjDTS.LogServerFlags
=
0
;
ObjDTS.FailPackageOnLogFailure
=
false
;
ObjDTS.ExplicitGlobalVariables
=
false
;
ObjDTS.PackageType
=
0
;
//
建立SQL的连接,设置其属性
DTS.Connection2 oConnection;
oConnection
=
(DTS.Connection2) ObjDTS.Connections.New(
"
SQLOLEDB
"
);
oConnection.ConnectionProperties.Item(
"
Integrated Security
"
).Value
=
"
SSPI
"
;
oConnection.ConnectionProperties.Item(
"
Persist Security Info
"
).Value
=
true
;
oConnection.ConnectionProperties.Item(
"
Initial Catalog
"
).Value
=
dataBase;
oConnection.ConnectionProperties.Item(
"
Data Source
"
).Value
=
server;
oConnection.ConnectionProperties.Item(
"
Application Name
"
).Value
=
"
DTS 导入/导出向导
"
;
oConnection.Name
=
"
连接1
"
;
oConnection.ID
=
1
;
oConnection.Reusable
=
true
;
oConnection.ConnectImmediate
=
false
;
oConnection.DataSource
=
server;
oConnection.ConnectionTimeout
=
60
;
oConnection.Catalog
=
this
.dataBase;
ObjDTS.Connections.Add( ( DTS.Connection)oConnection );
oConnection
=
null
;
//
建立导出数据库的连接,设置其属性
oConnection
=
( DTS.Connection2 )ObjDTS.Connections.New(
"
Microsoft.Jet.OLEDB.4.0
"
);
oConnection.ConnectionProperties.Item(
"
Data Source
"
).Value
=
this
.strDestinationFilePath;
oConnection.ConnectionProperties.Item(
"
Extended Properties
"
).Value
=
"
Excel 8.0;HDR=YES;
"
;
oConnection.Name
=
"
连接2
"
;
oConnection.ID
=
2
;
oConnection.Reusable
=
true