
如果只是用excel来显示的话 可以用csv 文件代替 “,”分割开字段内容就可以了,数据导入导出都比较方便
var
sl:Tstringlist;
tmpstr:string;
i:integer;
begin
sl:=TstringlistCreate;
slClear;
queryclose;
querysqltext:='select from mytablename where 1=1 ';
queryopen;
queryfirst;
while not queryeof do
begin
tmpstr:='';
//字段固定的话也可以,更具数据类型逐个设置
for i:=0 to queryFieldCount-1 do
begin
if tmpstr='' then
tmpstr:=queryFields[i]AsString
else
tmpstr:=tmpstr+','+queryFields[i]AsString;
end;
sladd(tmpstr);
querynext;
end;
queryclose;
slSaveToFile('c:\aaacsv');
{
//保存文件到当前程序目录下
slSaveToFile(sysutilsExtractFilePath(applicationExeName)+'aaacs');
}
slfree;
end;
手头没有delphi,不知道能不能编译过去,方法可以参考一下
登录到数据库 SQL Server 2008 中,中的‘’表示local的意思。
在需要 *** 作的数据库上右键之后选择任务再之后导出数据功能,例子中以DB_Test数据库做演示。
进入SQL Server 2008的数据导入与导出向导,之后点击下一步(next)。
选择服务器名称为local,例子中是'',数据库为DB_Test。实际中以真实数据库为主,以上只是演示实例,之后点击下一步。
选择导出的目标为Excel,数据库为默认值即可,选择Excel的文件路径之后点击下一步按钮继续 *** 作。
下一个页面采用默认设置,之后点击下一步按钮。选择数据库中即将要导出数据的具体表,可以通过预览按钮查看数据,之后点击下一步按钮。
之后点击下一步,再之后选择立即运行按钮与下一步。再点击完成按钮,最后点击关闭按钮即可。
最后,打开我们的Excel表格文件,验证数据,可以看到中已经有数据了,这样SQL Server 2008已经正确导出数据来了。
1 打开Access软件系统;
2 新建一个数据库,名字为“XXX”;
3 在d出的数据库框中选择“新建”创建一个新的表单;
4 在d出的框中选择“导入表”,即把外部的文件导入到但前的数据库中;
5 按“确定”钮,d出“导入”框,在框中的“文件类型”选择“Microsoft Excel”;
6 浏览选择所需要导入的Excel文件;
7 确定为“显示工作表”,点击“下一步”;
8 选择“第一行包含列标题”,点击“下一步”;
9 选择“新表中”,点击“下一步”;
10 对字段名定义,可以默认,点击“下一步”;
11 选择“自行选择主键主键”,在后侧下拉框选择主键,点击“下一步”;
12 在“导入到表”中填写新的表名,按“完成”按钮,完成全部的导入工作。
在数据库上右击,→
所有任务→导入数据→下一步→★此处是数据源
即你的excel表在下拉框中选择你的excel版本,在下面选择excel文件路径点击下一步
→
☆此处是目的
即你要导入的服务器,
数据库,和登陆方式
→下一步(根据实际情况选择)→选择你要导入的sheet名→下一步→
完成
就ok
了
用vba可以实现。
下面提供我给客户写的程序一部分,你可以参考。
Sub FYMXDL() ‘这个是导入数据库的
Dim XQID As Integer
Dim JZID As Integer
Dim FYID As Integer
Dim FBXZ As String '分包性质
Dim DW As String
Dim SARR(1 To 31) As Double
Dim rst As New ADODBRecordset
mYpath = ThisWorkbookPath & "\jzfydataaccdb"
Set cONn = CreateObject("ADODBConnection")
cONnConnectionString = "Provider=MicrosoftAceOleDB120;Data Source=" & mYpath
cONnConnectionString = cONnConnectionString & ";Jet OLEDB:Database "
cONnOpen
XQID = Cells(3, 2)Value
JZID = Cells(3, 5)Value
'清空改小区-建筑的费用明细
Sql = "delete from fymxb where 小区ID=" & XQID & " AND 建筑ID = " & JZID
cONnExecute Sql
Const kshh = 7
hh = kshh
Do While Cells(hh, 3)Value > 0
FYID = Cells(hh, 3)Value
FBXZ = Cells(hh, 11)Text
For i = 1 To 31
SARR(i) = Round(Cells(hh, 13 + i - 1)Value, 2)
Next i
Sql = "INSERT INTO fymxb(小区ID,建筑ID,费用ID,分包性质,工作量,单价合计_中标,人工费_中标, 主材费_中标, 辅材费_中标, 机械费_中标, 管理费_中标, 利润_中标,规费_中标,税金_中标,合价_中标,单价合计_标准成本,人工费_标准成本,主材费_标准成本,辅材费_标准成本,机械费_标准成本,管理费_标准成本,利润_标准成本,规费_标准成本,税金_标准成本,合价_标准成本,单价合计_实际成本,人工费_实际成本,主材费_实际成本,辅材费_实际成本,机械费_实际成本,管理费_实际成本,利润_实际成本,规费_实际成本,税金_实际成本,合价_实际成本) VALUES (" & XQID & ", " & JZID & ", " & FYID & ", '" & FBXZ & "'"
For i = 1 To 31
Sql = Sql & "," & SARR(i)
Next i
Sql = Sql & " )"
cONnExecute Sql
hh = hh + 1
Loop
End Sub
Sub FYMXDc() '导出费用明细
Dim jgarr(1 To 5, 1 To 2) As String '存放各级名称:1-id 2-名称
Dim XQID As Integer
Dim JZID As Integer
Dim FYID As Integer
Dim FBXZ As String '分包性质
Dim DW As String
Dim SARR(1 To 31) As Double
Dim rst As New ADODBRecordset
Const kshh = 7
mYpath = ThisWorkbookPath & "\jzfydataaccdb"
Set cONn = CreateObject("ADODBConnection")
cONnConnectionString = "Provider=MicrosoftAceOleDB120;Data Source=" & mYpath
cONnConnectionString = cONnConnectionString & ";Jet OLEDB:Database "
cONnOpen
XQID = Cells(3, 2)Value
JZID = Cells(3, 5)Value
'清空EXCEL
Range("A7:AQ1000")ClearContents
Sql = "SELECT from fymxb where 小区ID=" & XQID & " AND 建筑ID = " & JZID
rstOpen Sql, cONn, adopenkeyset, adlockoptimistic
If rstRecordCount > 0 Then
ARR = rstGetRows
Else
Exit Sub
End If
rstClose
Set rst = Nothing
hh = UBound(ARR, 2)
lh = UBound(ARR, 1)
For i = 0 To hh
Cells(kshh + i, 2) = ARR(0, i) 'ID
Cells(kshh + i, 3) = ARR(3, i) '费用ID
myid = ARR(3, i)
For j = 4 To 36
Cells(kshh + i, j + 7) = ARR(j, i) '分包性质后
Next j
'rstClose
'Set rst = Nothing
Sql = "select 名称,fid,SID,LEV,特征描述 from kmmxb where id = " & myid
rstOpen Sql, cONn, adopenkeyset, adlockoptimistic
ARR2 = rstGetRows
myfid = ARR2(1, 0)
mysid = ARR2(2, 0)
mylev = ARR2(3, 0)
mytzms = ARR2(4, 0)
MYSIDARR = Split(mysid, "-")
For k = 1 To mylev
jgarr(k, 1) = MYSIDARR(k - 1)
Next k
rstClose
For k = 1 To mylev
Sql = "select 名称 from kmmxb where id = " & jgarr(k, 1)
rstOpen Sql, cONn, adopenkeyset, adlockoptimistic
ARR2 = rstGetRows
jgarr(k, 2) = ARR2(0, 0)
rstClose
Next k
HH2 = kshh + i
'Cells(hh2, 3) = myid
Cells(HH2, 1) = myfid
For k = 1 To mylev
Cells(HH2, 4 + k - 1) = jgarr(k, 2)
Next k
Cells(HH2, 9) = mytzms
Next i
Call gs
End Sub
导入工具imp交互式命令行方式的例子
$imp
Import:Release81600-Proctionon星期五12月717:01:082001
©Copyright1999OracleCorporationAllrightsreserved
用户名:test
口令:
连接到:Oracle8iEnterpriseEditionRelease81600-64bitProction
Withtheoption
JServerRelease81600-Proction
导入文件:expdatdmp>/tmp/mdmp
输入插入缓冲区大小(最小为8192)30720>
经由常规路径导出由EXPORT:V080106创建的文件
警告:此对象由TEST导出,而不是当前用户
已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入
只列出导入文件的内容(yes/no):no>
由于对象已存在,忽略创建错误(yes/no):no>yes
导入权限(yes/no):yes>
导入表数据(yes/no):yes>
导入整个导出文件(yes/no):no>yes
正在将TEST的对象导入到SCOTT
正在导入表"CMAMENU"4336行被导入
成功终止导入,但出现警告。
导入工具imp非交互式命令行方式的例子
$impsystem/managerfromuser=jonestables=(ats)
$impsystem/managerfromuser=scotttables=(emp,dept)
$impsystem/managerfromuser=scotttouser=joetables=emp
$impscott/tigerfile=expdatdmpfull=y
$impscott/tigerfile=/mnt1/t1dmpshow=nbuffer=2048000ignore=ncommit=ygrants=yfull=ylog=/oracle_backup/log/imp_scottlog
$impsystem/managerparfile=paramsdat
paramsdat内容
file=dbadmpshow=nignore=ngrants=yfromuser=scotttables=(dept,emp)
导入工具imp可能出现的问题
(1)数据库对象已经存在
一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等;
数据库对象已经存在,按缺省的imp参数,则会导入失败
如果用了参数ignore=y,会把exp文件内的数据内容导入
如果表有唯一关键字的约束条件,不合条件将不被导入
如果表没有唯一关键字的约束条件,将引起记录重复
(2)数据库对象有主外键约束
不符合主外键约束时,数据会导入失败
解决办法:先导入主表,再导入依存表
disable目标导入对象的主外键约束,导入数据后,再enable它们
(3)权限不够
如果要把A用户的数据导入B用户下,A用户需要有imp_full_database权限
(4)导入大表(大于80M)时,存储分配失败
默认的EXP时,compress=Y,也就是把所有的数据压缩在一个数据块上
导入时,如果不存在连续一个大数据块,则会导入失败
导出80M以上的大表时,记得compress=N,则不会引起这种错误
(5)imp和exp使用的字符集不同
如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息
导入完成后再改回来
(6)imp和exp版本不能往上兼容
imp可以成功导入低版本exp生成的文件,不能导入高版本exp生成的文件
根据情况我们可以用
$impusername/password@connect_string
说明:connect_string是在/ORACLE_HOME/network/admin/tnsnamesora
定义的本地或者远端数据库的名称
注意事项:
UNIX:/etc/hosts要定义本地或者远端数据库服务器的主机名
win98:windowshosts和IP地址的对应关系
win2000:winntsystem32driversetchosts
以上就是关于delphi如何批量导出excel表的数据到数据库全部的内容,包括:delphi如何批量导出excel表的数据到数据库、SqlServer 2008数据库 怎么样导出Excel表格数据、如何将excel转换成数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)