我想在Delphi 程序中实现将Excel 中的数据导入到Sql server数据库中,遇到如下问题,求助各位高手:
1、判断Excel 中某一格是否为空,如何做?
用过Excel.cell[i,j].value='' 不行;Excel.cell[i,j].value=NULL也不行
2、Sql server表中某一字段不允许重复值出现,如何在导入前就判断出Excel表中该字段的值是否与Sql server表中原来的记录相重复?
3、不知能否用程序来调用Sql server的DTS?
不知各位高手有什么好的办法?
1、判断Excel 中某一格是否为空,如何做?
用过Excel.cell[i,j].value='' 不行;Excel.cell[i,j].value=NULL也不行
2、Sql server表中某一字段不允许重复值出现,如何在导入前就判断出Excel表中该字段的值是否与Sql server表中原来的记录相重复?
3、不知能否用程序来调用Sql server的DTS?
不知各位高手有什么好的办法?
2 你可以直接在sql的插入中(sql语句或者触发器)再判断啊
3 你可以用sql语句或者用sqldmo来调用dts,不过如果你想从excel中导入数据到sql,还有更简单的办法:
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
INSERT INTO your_table
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')
只是最近很忙一直没有时间来整理,
等我整理过后就在这里发表吧!~~~你的第二个问题可以这样来判断啊
locate方法来判断啊!~~~如果存在,那就 提示用户是否需要覆盖
第一 个问题:你的意思是不是说需要首先判断在excel表中总共用到了哪些列,哪些行呢
如果是这样,那简单,
具体代码我忘记了,我等一下回去在来给你代码好不
不知如何取得我打开的Excel中的最大行数,最大列数
Excel中的最大行数,最大列数的取法不同
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Visible := False ;
ExcelApp.WorkBooks.Add;
ExcelApp.WorkBooks.Open(xlsFileName );
ExcelApp.WorkSheets[1].Activate;
var
filename:string;
ExcelApp: Variant;
lastrow,lastcol:integer;
begin
if importopendialog.Execute then
begin
filename:=importopendialog.FileName;
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := false;
ExcelApp.WorkBooks.Open(filename);
ExcelApp.WorkSheets[1].Activate; ExcelApp.Cells.SpecialCells(11,EmptyParam).Activate;
lastRow := ExcelApp.ActiveCell.Row;
lastCol := ExcelApp.ActiveCell.Column;
showmessage(inttostr(lastrow));
showmessage(inttostr(lastcol)); ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
end;
end;相关帖子 http://expert.csdn.net/Expert/topic/1639/1639508.xml?temp=.1147119
没有数据的好像没穷没尽的。
可以用一个循环判断Trim(Excel.cell[i,j].value)=''来确定最大行数,最大列数
Couldn’t perform the edit because another user changed the record
不知是哪出错了?