数据导入的问题

yinhong0812 2003-09-12 02:33:00
我想做一个抽奖程序,其中要导入文本文件和EXCEL的数据,在DELPHI中怎么实现啊
最好有例子啊!
...全文
28 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
IORILI 2003-09-12
  • 打赏
  • 举报
回复
写excel:
procedure Tjiance.ToolButton1Click(Sender: TObject);
var
myworksheet1:TExcelWorksheet;
MyExcel:TExcelApplication;
MyWorkbook:TExcelWorkbook;
cell,cur_row:integer;
begin
if datamodule2.SaveDialog1.Execute then
begin
//连接excel
MyExcel:=TExcelApplication.Create(Application);
MyWorkbook:=TExcelWorkbook.Create(Application);
myworksheet1:=TExcelWorksheet.Create(Application);
myexcel.connect;
myexcel.workbooks.Add(EmptyParam, 0);
myworkbook.ConnectTo(ExcelApplication1.Workbooks[1]);
myWorksheet1.ConnectTo(myWorkbook.Worksheets[1] as _worksheet);
myworksheet1.name:='基本信息';
datamodule2.publicq.Close;
datamodule2.publicq.SQL.Clear;
datamodule2.publicq.SQL.Add('select * from type where oid='''+trim(dbedit1.Text)+'''');
datamodule2.publicq.Active:=true;
datamodule2.publicq.Open;
//写机型信息
myworksheet1.cells.item[1, 1]:='名称';
myworksheet1.cells.item[1, 2]:=datamodule2.publicq.FieldByName('name').AsString;
myworksheet1.cells.item[2, 1]:='专用号';
myworksheet1.cells.item[2, 2].NumberFormatLocal:='@';
myworksheet1.cells.item[2, 2]:=datamodule2.publicq.FieldByName('oid').AsString;
myworksheet1.cells.item[3, 1]:='型号经理';
myworksheet1.cells.item[3, 2]:= datamodule2.publicq.FieldByName('type_mgr').AsString;
myworksheet1.cells.item[4, 1]:='编制';
myworksheet1.cells.item[4, 2]:=datamodule2.publicq.FieldByName('bianzhi').AsString;
myworksheet1.range[myworksheet1.cells.Item[1, 1],myworksheet1.cells.Item[4,1]].Font.ColorIndex := 5;
myworksheet1.cells.item[6, 1]:='母本厂家';
myworksheet1.cells.item[6, 2]:='国别';
myworksheet1.cells.item[6, 3]:='机型';
myworksheet1.cells.item[6, 4]:='借鉴点';
myworksheet1.cells.item[6, 5]:='差异点';
myworksheet1.cells.item[6, 6]:='母本价格';
myworksheet1.cells.item[6, 7]:='市场占有率';
myworksheet1.range[myworksheet1.cells.Item[6, 1],myworksheet1.cells.Item[6,7]].Font.ColorIndex := 5;
For cell:=3 To 9 do
myworksheet1.cells.item[7,cell-2]:=datamodule2.publicq.Fields[cell].AsString;
myworksheet1.cells.item[9, 1]:='价格';
myworksheet1.cells.item[9, 2]:='卖点';
myworksheet1.cells.item[9, 3]:='竞争对手分析';
myworksheet1.cells.item[9, 4]:='图片';
myworksheet1.cells.item[9, 5]:='目标销量';
myworksheet1.range[myworksheet1.cells.Item[9, 1],myworksheet1.cells.Item[9,5]].Font.ColorIndex := 5;
For cell:=10 To 14 do
myworksheet1.cells.item[10,cell-9]:=datamodule2.publicq.Fields[cell].AsString;
// '写案例信息
myworksheet1.cells.item[12, 1]:='案例日期';
myworksheet1.cells.item[12, 2]:='案例经过';
myworksheet1.cells.item[12, 3]:='紧急措施';
myworksheet1.cells.item[12, 4]:='过渡措施';
myworksheet1.cells.item[12, 5]:='根治措施';
myworksheet1.range[myworksheet1.cells.Item[12, 1],myworksheet1.cells.Item[12,5]].Font.ColorIndex := 5;
For cell:= 16 To 20 do
myworksheet1.cells.item[13,cell-15]:=datamodule2.publicq.Fields[cell].AsString;
// '写成本信息
myworksheet1.cells.item[15, 1]:='目标成本价';
myworksheet1.cells.item[15, 2]:= datamodule2.publicq.Fields[15].AsString;
[cur_row, 5]:='专利人';
myworksheet1.cells.item[cur_row, 6]:='有效期';
myworksheet1.range[myworksheet1.cells.Item[cur_row, 1],myworksheet1.cells.Item[cur_row,6]].Font.ColorIndex := 5;
cur_row := cur_row + 1;
datamodule2.publicq.Close;
datamodule2.publicq.SQL.Clear;
datamodule2.publicq.SQL.Add('select * from type_patent where type_oid='''+Trim(dbedit1.Text)+'''');
datamodule2.publicq.Active:=true;
datamodule2.publicq.open;
While Not datamodule2.publicq.Eof do
begin
For cell:= 1 To 6 do
myworksheet1.cells.item[cur_row,cell]:=datamodule2.publicq.fields[cell].asstring;
datamodule2.publicq.Next;
end;
myWorksheet1.ConnectTo(myWorkbook.Worksheets[2] as _worksheet);
myworksheet1.Name := '机型BOM';
datamodule2.publicq.Close;
datamodule2.publicq.SQL.Clear;
datamodule2.publicq.SQL.Add('execute create_bom '''+Trim(dbedit1.Text)+''''+',0');
datamodule2.publicq.ExecSQL;
datamodule2.publicq.Close;
datamodule2.publicquery.SQL.Clear;
datamodule2.publicq.SQL.Clear;
datamodule2.publicq.SQL.Add('select ceng,parent_oid,com_oid,name,mater,size,per_use,base_unit,order_no,try_factory,try_price from temp_bom');
datamodule2.publicq.Active:=true;
datamodule2.publicq.open;
myworksheet1.cells.item[1, 1]:='层';
myworksheet1.cells.item[1, 2]:='装配关系';
myworksheet1.cells.item[1, 3]:='专用号';
myworksheet1.cells.item[1, 4]:='名称';
myworksheet1.cells.item[1, 5]:='材料';
myworksheet1.cells.item[1, 6]:='规格';
myworksheet1.cells.item[1, 7]:='单台用量';
myworksheet1.cells.item[1, 8]:='单位';
myworksheet1.cells.item[1, 9]:='工序';
myworksheet1.cells.item[1, 10]:='试制时厂家';
myworksheet1.cells.item[1, 11]:='试制时价格';
myworksheet1.range[myworksheet1.cells.Item[1, 1],myworksheet1.cells.Item[1,11]].Font.ColorIndex := 5;
myworksheet1.cells.item[2, 2].NumberFormatLocal:='@';
myworksheet1.cells.item[3,3].NumberFormatLocal :='@';
cur_row := 2;
While Not datamodule2.publicq.EOF do
begin
For cell:= 0 To 10 do
myworksheet1.cells.item[cur_row,cell+ 1]:=datamodule2.publicq.Fields[cell].AsString;
datamodule2.publicq.next;
cur_row := cur_row + 1;
end;
//'写试制信息
cur_row := cur_row + 1;
datamodule2.publicq.Close;
datamodule2.publicq.SQL.Clear;
datamodule2.publicq.SQL.Add('select * from type where oid='''+trim(dbedit1.Text)+'''');
datamodule2.publicq.Active:=true;
datamodule2.publicq.Open;
myworksheet1.cells.item[cur_row, 1] :='试制日期';
myworksheet1.cells.item[cur_row, 2] :='试制人';
myworksheet1.cells.item[cur_row, 3] :='试制中出现的问题';
myworksheet1.cells.item[cur_row, 4] :='解决措施';
myworksheet1.range[myworksheet1.cells.Item[cur_row, 1],myworksheet1.cells.Item[cur_row,4]].Font.ColorIndex := 5;
cur_row := cur_row + 1;
For cell:= 25 To 28 do
myworksheet1.cells.item[cur_row, cell- 24]:=datamodule2.publicq.Fields[cell].AsString;
//'写认证信息
myWorksheet1.ConnectTo(myWorkbook.Worksheets[3] as _worksheet);
myworksheet1.Name :='认证信息';
datamodule2.publicq.Close;
datamodule2.publicq.SQL.Clear;
datamodule2.publicq.SQL.Add('select * from type_rz where type_oid='''+trim(dbedit1.text)+'''');
datamodule2.publicq.active:=true;
datamodule2.publicq.open;
// .Columns(1).NumberFormatLocal = "@"
cur_row := 1;
While Not datamodule2.publicq.Eof do
begin
myworksheet1.cells.item[cur_row, 1]:='认证种类';
myworksheet1.cells.item[cur_row, 2]:='期限';
myworksheet1.cells.item[cur_row, 3]:='完成日期';
myworksheet1.SaveAs(datamodule2.SaveDialog1.FileName+'.xls');
end;
end;
IORILI 2003-09-12
  • 打赏
  • 举报
回复
读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;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧