读excel中的数据:
procedure Tjishuziliao_add.Button1Click(Sender: TObject);
var
mr:word;bom_cell:integer;//bom_cell//excel表的可用行数(bom)//change//改变所属开发平台
myworksheet1,MyExcel,MyWorkbook:Variant;
begin
if combobox1.Text='' then
showmessage('请输入机型名称!');
if edit2.Text='' then
showmessage('请输入机型专用号!');
if edit3.Text='' then
showmessage('请选择机型BOM!');
with datamodule2 do
begin
publicquery.Close;
publicquery.SQL.Clear;
publicquery.SQL.Add('select count(*) num from v_bom where type_oid='''+trim(edit2.Text)+'''');
publicquery.Active:=true;
publicquery.Open;
if publicquery.fields[0].AsInteger>0 then
begin
mr:=MessageDlg('该机型的部件BOM在数据库中已存在,要替换掉原来的BOM表吗'+#13+'选"是"将先删除原来的机型BOM,然后添加新的机型BOM,'+#13+
'选"否"将保留原有机型BOM,并添加新的数据'+#13+'选"取消"将退出该次操作',
mtConfirmation, [mbYes, mbNo,mbcancel], 0);
if mr = mrYes then
begin
screen.Cursor:=crHourGlass;
publicquery.Close;
publicquery.SQL.Clear;
publicquery.SQL.Add('delete from v_bom where type_oid='''+trim(edit2.Text)+'''');
publicquery.execsql;
end;
if mr=mrcancel then
exit;
end;
end;
//连接excel
MyExcel:=createoleobject('Excel.Application');
MyWorkbook:=MyExcel.Workbooks.Open(datamodule2.OpenDialog1.FileName);
MyExcel.Visible:=false;
myworksheet1:=myexcel.activesheet;
//判断字段
for bom_cell:=1 to myworksheet1.usedrange.columns.Count do
begin
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='父项编码' then
fuxiang_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='专用号' then
type_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='物料描述' then
name_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='图号' then
guige_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='是否库存' then //材料
cailiao_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='基本单位' then
danwei_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='单台用量' then
danhao_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='工序编号' then
gongxu_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='开发平台' then
plat_field:=bom_cell;
end;
//执行存储过程
datamodule2.publicquery.Close;
datamodule2.publicquery.SQL.Clear;
datamodule2.publicquery.SQL.add('execute import_type'''+trim(edit2.Text)+''''+','''+trim(combobox1.Text)+'''');
datamodule2.publicquery.ExecSQL;
try For bom_cell:=2 To myworksheet1.usedrange.Rows.Count do
begin
datamodule2.publicquery.Close;
datamodule2.publicquery.SQL.Clear;
//机型专用号 部件专用号 部件名称 部件规格 图号 部件材料*是否库存 部件单位 单耗 工序 父项专用号 所属开发平台
datamodule2.publicquery.SQL.Add('execute insert_type_bom'''+trim(edit2.Text)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,type_field],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,name_field ],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,guige_field],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,guige_field],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,cailiao_field],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,danwei_field],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,danhao_field],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,gongxu_field],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,fuxiang_field],varstring)+''''+','''+varastype(myworksheet1.cells.item[bom_cell,plat_field],varstring)+'''');
datamodule2.publicquery.ExecSQL;
end;
showmessage('数据导入成功!');
except
showmessage('导入出错!可能是数据格式不对,请核对后重新导入!');
end;
screen.Cursor:=crDefault;
myworkbook.close;
myexcel.quit;
myexcel:=unassigned;
close;
end;