delphi批量导入数据Word格式.docx

上传人:b****6 文档编号:21109818 上传时间:2023-01-27 格式:DOCX 页数:30 大小:484.68KB
下载 相关 举报
delphi批量导入数据Word格式.docx_第1页
第1页 / 共30页
delphi批量导入数据Word格式.docx_第2页
第2页 / 共30页
delphi批量导入数据Word格式.docx_第3页
第3页 / 共30页
delphi批量导入数据Word格式.docx_第4页
第4页 / 共30页
delphi批量导入数据Word格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

delphi批量导入数据Word格式.docx

《delphi批量导入数据Word格式.docx》由会员分享,可在线阅读,更多相关《delphi批量导入数据Word格式.docx(30页珍藏版)》请在冰豆网上搜索。

delphi批量导入数据Word格式.docx

maxRow

XLApp.ActiveCell.SpecialCells(xlLastCell).Select;

maxRow:

=XLApp.ActiveCell.Row;

//当前行数

//最大行数

//写数据到access库

withDm1.aq_tempdo

Close;

SQL.Clear;

SQL.Add('

select*frompeo'

open;

foriRow:

=1toMaxRowdo// 

循环次数为excel最大行数字-1,因为excel的第1行为IDname表头。

Edit;

Append;

fieldByName('

P_No'

).asString:

=sheet.cells[iRow,1];

P_Name'

=sheet.cells[iRow,2];

//导入

post;

end;

finally

ifnotVarIsEmpty(XLApp)then

begin 

//释放对象

=true;

//结束后,ScreenUpdating设回到True

XLApp.quit;

=crDefault;

end;

现在sql里有book的表,里面有 

id 

书名 

价格 

bookname 

price 

社会与科学 

18 

delphi入门 

25 

百科 

30 

在delphi里现在希望先把数据从excel导入到dbgrid中,然后点“批量插入”时,把刚才所有存到导入的dbgrid的数据插入到sql中,问一下大家怎么才能做到,有二个关键代码 

1.button1:

“从excel导入到dbgrid中”的关键代码 

2.button2:

"

批量插入dbgrid数据到数据库中"

的关键代码 

如果利用dbgrid其实就是利用数据集来操作

从excel读数据,然后利用

adoquery.append;

adoquery.fieldbyname('

'

).value 

:

读的值

....

...

然后,对dbgrid进行编辑.

最后adoquery.post;

就达到了批量提交了.

但这里要用事务来控制.

读Excel代码:

利用一个结构体,供你参考

RangeMatrix:

Variant;

OpenDialog1:

TOpenDialog;

iRE:

IN_TYPE,vStockName:

String;

sStockName,sCompany:

i:

Integer;

MsExcel, 

MsExcelWorkBook, 

MsExcelWorkSheet:

ASN2_NEW:

PASN2_NEW;

=TOpenDialog.Create(nil);

try

OpenDialog1.FileName:

='

*.csv;

*.xls'

;

if 

not 

OpenDialog1.Execute 

then

Result 

false;

exit;

MsExcel 

CreateOleObject('

MsExcelWorkBook 

msExcel.Workbooks.Open(OpenDialog1.FileName);

MsExcelWorkSheet 

msExcel.Worksheets.Item[1];

except

//开始从EXCEL文件读取相关的信息

Application.ProcessMessages;

for 

to 

MsExcelWorkSheet.Rows.Count 

do

New(FASN2);

FASN2.In_Stock_No 

trim(MsExcelWorkSheet.Range['

B1'

].Value);

FASN2.MAIN_FLG 

A'

IntToStr(i)].Value);

FAsn2List.Add(FASN2);

//在这里可以调用adoquery.append代码

true;

finally

MsExcel.WorkBooks.Close;

MsExcel.Quit;

OpenDialog1.Free;

为了更清淅的表达我的意思,上传一张图

//excel 

读到 

dbgrid

str:

select 

from 

opendatasource('

microsoft.jet.oledb.4.0'

'

data 

source="

文件路径"

user 

id=admin;

password=;

extened 

properties=excel 

5.0'

)...[sheet1$]'

adoquery.close;

adoquery.sql.clear;

adoquery.sql.add(str);

adoquery.active:

adoquery.open;

//dbgrid 

导入数据表

into 

with 

adoquery 

close;

sql.clear;

sql.add(str);

execsql;

rowsaffected>

showmessage('

插入成功'

else

showmessage(插入失败);

致:

sz9214e

  感谢你的回帖,其实这二个帖有一部分是重复的,就是把dbgrid数据批量插入到sql中,不同是的

这个帖重点:

  把数据从excel导到dbgrid中,再把dbgrid数据批量插入到sql中

下一个帖的重点是:

  先在DBGrid1中存放N条记录,但不要即时存入数据库中,全部录入完成时再把dbgrid数据批量插入到sql中 

  上周因受了点伤没有上班,今天才开始上班,再次感谢你的回帖,能否把源程序发给我,这样我觉得快些,谢谢!

我的email是:

ansameye@

解决问题的代码:

procedure 

TForm1.btnClick(Sender:

TObject);

OpenDialog1.Title 

请选择正确的excel文件'

OpenDialog1.Filter 

Excel(*.xls)|*.xls'

edit1.Text 

OpenDialog1.FileName;

TForm1.btninClick(Sender:

const

BeginRow 

2;

BeginCol 

1;

Excel:

OleVariant;

iRow,iCol 

xlsFilename:

(trim(edit1.Text) 

) 

MessageBox(GetActiveWindow(), 

请选择正确的excel路径'

 

MB_OK 

+

MB_ICONWARNING);

xlsFilename 

trim(edit1.Text);

Excel 

CreateOLEObject('

Application.MessageBox('

excel没有安装'

提示信息'

MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);

Exit;

Excel.Visible 

Excel.WorkBooks.Open(xlsFilename);

iRow 

BeginRow;

iCol 

BeginCol;

while 

trim(Excel.WorkSheets[1].Cells[iRow,iCol].value) 

<

>

do 

ADOQuery1 

Append;

Fields[0].AsString 

trim(Excel.WorkSheets[1].Cells[iRow,iCol].value);

Fields[1].AsString 

trim(Excel.WorkSheets[1].Cells[iRow,iCol+1].value);

Fields[2].Asstring 

trim(Excel.WorkSheets[1].Cells[iRow,iCol+2].value);

Excel.Quit;

ADOQuery1.UpdateStatus 

导入数据出错'

数据导入成功'

如何在DELPHI中将EXCEL中的数据导入到SQL数据库

s1:

=crSQLWait;

insertintotable_bus'

'

(BS_NO,BS_TYPE,bs_whos,bs_mode,bs_seat,bs_soalseat,bs_drseat,bs_oiltype,bs_buycard,bs_unit,BS_BDATE,bs_edate)'

SELECT车号,dbo.uf_GetFullNameCode(车型名称),dbo.uf_GetFullNameCode(所属单位),dbo.uf_GetFullNameCode(厂牌型号),核定座位,售票座位,驾驶室前排座位,dbo.uf_GetFullNameCode(燃料名称),购置证号,本外单位,启用日期,dbo.uf_ConvertNullDate(终止时间)'

FROMOpenDataSource('

Microsoft.Jet.OLEDB.4.0'

DataSource="

+trim(LabeledEdit1.text)+'

ExtendedProperties=Excel8.0;

PersistSecurityInfo=False'

)...[Sheet1$]'

where车号notin(selectbs_nofromtable_bus)'

DataModule1.ADOConnection1.Execute(s1);

=crArrow;

EXCEL是可以当成一种数据源来处理的。

Str:

='

Provider=Microsoft.Jet.OLEDB.4.0;

DataSource='

+文件路径+

然后每列相当于一字段 

熟悉SQLSERVER2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。

在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET函数,关于函数的详细说明,请参考SQL联机帮助。

利用下述方法,可以十分容易地实现SQLSERVER、ACCESS、EXCEL数据转换,详细说明如下:

一、SQLSERVER和ACCESS的数据导入导出

常规的数据导入导出:

使用DTS向导迁移你的Access数据到SQLServer,你可以使用这些步骤:

  ○1在SQLSERVER企业管理器中的Tools(工具)菜单上,选择DataTransformation

  ○2Services(数据转换服务),然后选择czdImportData(导入数据)。

  ○3在ChooseaDataSource(选择数据源)对话框中选择MicrosoftAccessastheSource,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。

  ○4在ChooseaDestination(选择目标)对话框中,选择MicrosoftOLE DBProviderforSQL Server,选择数据库服务器,然后单击必要的验证方式。

  ○5在SpecifyTableCopy(指定表格复制)或Query(查询)对话框中,单击Copytables(复制表格)。

○6在SelectSourceTables(选择源表格)对话框中,单击SelectAll(全部选定)。

下一步,完成。

Transact-SQL语句进行导入导出:

1.在SQLSERVER里查询access数据:

SELECT*

FROMOpenDataSource('

c:

/DB.mdb"

UserID=Admin;

Password='

)...表名

2.将access导入SQLserver

在SQLSERVER里运行:

SELECT*

INTOnewtable

FROMOPENDATASOURCE('

)...表名

3.将SQLSERVER表里的数据插入到Access表中

在SQLSERVER里运行:

insertintoOpenDataSource('

c:

)...表名

(列名1,列名2)

select列名1,列名2fromsql表

实例:

insertintoOPENROWSET('

C:

/db.mdb'

admin'

Test)

selectid,namefromTest

INSERTINTOOPENROWSET('

'

/trade.mdb'

表名)

FROMsqltablename

二、SQLSERVER和EXCEL的数据导入导出

1、在SQLSERVER里查询Excel数据:

/book1.xls"

Password=;

Extendedproperties=Excel5.0'

)...[Sheet1$]

下面是个查询的示例,它通过用于Jet的OLEDB提供程序查询Excel电子表格。

FROMOpenDataSource('

/Finance/account.xls"

)...xactions

2、将Excel的数据导入SQLserver:

SELECT*intonewtable

实例:

3、将SQLSERVER中查询到的数据导成一个Excel文件

T-SQL代码:

EXECmaster..xp_cmdshell'

bcp库名.dbo.表名outc:

/Temp.xls-c-q-S"

servername"

-U"

sa"

-P"

参数:

S是SQL服务器名;

U是用户;

P是密码

说明:

还可以导出文本文件等多种格式

bcpsaletesttmp.dbo.CusAccountoutc:

/temp1.xls-c-q-S"

pmserver"

bcp"

SELECTau_fname,au_lnameFROMpubs..authorsORDERBYau_lname"

queryoutC:

/authors.xls-c-Sservername-Usa-Ppassword'

在VB6中应用ADO导出EXCEL文件代码:

DimcnAsNewADODB.Connection

cn.open"

Driver={SQLServer};

Ser

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1