找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
楼主: Louis

用友凭证导入工具

    [复制链接]
发表于 2009-2-18 11:31:55 | 显示全部楼层
谢谢分享!!!
发表于 2009-3-4 14:02:23 | 显示全部楼层
好东西,正好要用到
发表于 2009-3-4 22:13:46 | 显示全部楼层
V821的可以吗?
发表于 2009-3-6 16:06:13 | 显示全部楼层
能不能发给我啊?yuanni@chjchina.com  谢谢啦!
发表于 2009-3-6 16:15:08 | 显示全部楼层
能发给我吗?nikki_xyn@hotmail.com谢谢!
发表于 2009-3-11 12:19:46 | 显示全部楼层
非常实用的东东啊非常实用的东东啊非常实用的东东啊非常实用的东东啊非常实用的东东啊非常实用的东东啊非常实用的东东啊非常实用的东东啊
发表于 2009-3-11 12:21:21 | 显示全部楼层
非常实用的东东啊
发表于 2009-3-26 22:52:14 | 显示全部楼层
灌水从现在开始................
发表于 2009-3-30 15:00:15 | 显示全部楼层
感谢提供!!!支持!!!!!!!
发表于 2009-3-30 15:05:02 | 显示全部楼层
感谢提供!!!支持!!!!!!!
发表于 2009-3-30 15:12:48 | 显示全部楼层
好东东要一起分享~~~~
发表于 2009-3-30 15:23:57 | 显示全部楼层
好东东要一起分享~~~~
发表于 2009-3-30 15:28:51 | 显示全部楼层
很多关于delphi 的书籍上都有怎么把数据库中的数据导出到Excel 里去,可是偶却从没见过它们描述 怎么把 Excel 中的数据反导回数据库中。。。
在网上搜索后也没找到什么解决的方法,于是就自己研究了一下。。

数据库用的是 Paradox 7,搞Delphi 的都知道的数据库。
使用的控件有:
BDE中的TTable,Data Access中的TDataSource,Dialogs中的TOpenDialog和TSaveDialog,Servers中的TExcelApplication、TExcelWorksheet以及TExcelWorkbook

这里只提供静态载入的方法,动态的可根据Excel 的字段名来动态创建数据库的字段来实现。

把Excel中的数据导入数据库,代码分析如下:
procedure TForm1.Button1Click(Sender: TObject);
Var
  i,Excel_ROW:integer;
begin
  if OpenDialog1.Execute then
   begin
   if Application.MessageBox('数据量大时导入时间可能较长,请耐心等待!','提示',MB_OKCANCEL+MB_ICONWarning)=IDOK then
    try
     //清空数据表
     Table1.Close;
     Table1.TableType:= ttParadox;
     Table1.EmptyTable;
     Table1.Open;
     //连接 Excel
     ExcelApplication1.Connect;
     //将 Excel 设置为不可视
     ExcelApplication1.Visible[0]:=false;
     //打开要读取的 Excel 文件
     ExcelApplication1.Workbooks.Open(OpenDialog1.FileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
     //连接工作簿
     ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
     //连接工作表
     ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
     //获取工作表中已用区域数据的行数
     Excel_ROW:=ExcelWorkSheet1.UsedRange[1].Rows.Count;
     //将 Excel 中的数据写入数据表
     for i:=2 to Excel_ROW do
       begin
         Table1.Append;
         Table1.Edit;
         Table1.FieldbyName('序号').AsString:=ExcelWorksheet1.Cells.Item[i,1];
         Table1.FieldbyName('工号').AsString:=ExcelWorksheet1.Cells.Item[i,2];
         Table1.FieldbyName('姓名').AsString:=ExcelWorksheet1.Cells.Item[i,3];
         Table1.FieldbyName('部门').AsString:=ExcelWorksheet1.Cells.Item[i,4];
         Table1.FieldbyName('日期').AsString:=ExcelWorksheet1.Cells.Item[i,7];
         Table1.FieldbyName('星期').AsString:=ExcelWorksheet1.Cells.Item[i,8];
         Table1.FieldbyName('上班1').AsString:=ExcelWorksheet1.Cells.Item[i,9];
         Table1.FieldbyName('下班1').AsString:=ExcelWorksheet1.Cells.Item[i,10];
         Table1.FieldbyName('上班2').AsString:=ExcelWorksheet1.Cells.Item[i,11];
         Table1.FieldbyName('下班2').AsString:=ExcelWorksheet1.Cells.Item[i,12];
         Table1.FieldbyName('上班3').AsString:=ExcelWorksheet1.Cells.Item[i,13];
         Table1.FieldbyName('下班3').AsString:=ExcelWorksheet1.Cells.Item[i,14];
         Table1.FieldbyName('请假总计').AsString:=ExcelWorksheet1.Cells.Item[i,17];
         Table1.Post;
       end;
     Application.MessageBox('数据载入成功!','提示',MB_OK);
    except
      //清空数据表
      Table1.Close;
      Table1.TableType:= ttParadox;
      Table1.EmptyTable;
      Table1.Open;
      Application.MessageBox('数据读取失败,请查看Excel文件格式是否正确!','提示',MB_OK+MB_ICONWarning);
    end;
    //关闭 Excel
    ExcelApplication1.Quit;
    //解除与 Excel 的连接
    ExcelApplication1.Disconnect;
   end;
end;
发表于 2009-4-2 15:21:41 | 显示全部楼层
不错的东西,收藏起来
发表于 2009-4-2 15:32:56 | 显示全部楼层
终于让我找到了,激动啊,谢谢楼主
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-25 13:58 , Processed in 0.059597 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表