全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3739
推到 Plurk!
推到 Facebook!

如何擷取 【 健保用藥品項 】

 
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-02 17:55:03 IP:203.73.xxx.xxx 未訂閱
http://www.nhi.gov.tw/webdata/webdata.asp?menu=3&menu_id=56&webdata_id=1099 下載:壓縮總檔>766k 來源檔案:all.b5 解壓縮>20267k 輸出檔案: XLS / TXT
procedure TForm1.Button1Click(Sender: TObject);
var
  F    :TextFile;
  F_XLS:TextFile;
  allb5:TextFile;
  cnt: Integer;
  na:string;//品名規格
  ty:string;//型號
  d1, d0:string;
  un :string;
  d2:string;
  fmtstr: String;
  lstcde:string;
  cde:string;      pr :real;
  cmp:real;
  strb5,   spr:string;
  s_dt ,  e_dt:string;
  sna , sun:string;//品名規格 規格單位
  qtt:string;      //成份
  qttc:string;     //成份 含量
  qttu:string;     //成份 含量單位
  exc :string;     //劑      型 205
  flag:char;
  ftna:string;
  str:string;
  strlist:Tstringlist;
begin
  assignfile(allb5,'all.b5');
  assignfile(F,'c:\host\RXTOT.TXT');
  assignfile(F_XLS,'RXTOT.xls');
  rewrite(F);
  rewrite(F_XLS);
  reset(allb5);      strList := TStringList.Create;
  cnt:=0;
  lstcde:=' ';
  flag:='0';
  while not Eof(allb5) do
  begin
    Readln(allb5, strb5);        if (copy(strb5,4,1)='Y') or (copy(strb5,4,1)='N') then
       flag:='1';        if flag='1' then
    begin
      cde:=copy(strb5,7,10);
      if cde <> lstcde then
      begin
        pr  :=strtofloat( copy(strb5,18, 9)); //參考價
        s_dt:=copy(strb5,28, 6);              //start 有效期
        e_dt:=copy(strb5,35, 6);              //end date
        sna :=copy(strb5,42, 74);             //英文名              + 規格量
        sun :=copy(strb5,117,8);              //規格單位
        qtt :=copy(strb5,129,54);             //成份            len:55
        cmp :=strtofloat(copy(strb5,185,8));  //成份含量
        qttu:=copy(strb5,194,8);              //成份含量單位            exc :=copy(strb5,209,12);//205
        ftna:=copy(strb5,222,40);//218
        spr :=format('%9.2f',[pr]);
        //if cnt <1000 then
         //   listbox1.Items.add(cde+' '+ spr+' '+ s_dt+' '+ e_dt+' '+ sna);
        str:=format('%-12ss %s%s%-56s%-54s%-20s%s',[cde, spr, s_dt, e_dt,copy(sna,1,56),qtt,exc,ftna]);
        writeln(F, str);
        str:=cde+#9+spr+#9+s_dt+#9+e_dt+#9+copy(sna,1,56)+#9+qtt+#9+exc+#9+ftna;
        writeln(F_XLS,str);
        lstcde:=cde;
        inc(cnt);
        Application.ProcessMessages; //在迴圈中,強迫處理Queue中的訊息
        canvas.textout(10,10,inttostr(cnt))          end;
    end;
  end;
  closefile(f_xls);
  closefile(allb5);
  closefile(F);
//********************************************************************
  strList.Free;
  showmessage('轉 檔 O K !')
end;
 
**Never give up, Remember GOD is Love** 發表人 - christie 於 2005/12/02 18:20:30
------
What do we live for if not to make life less difficult for each other?
系統時間:2024-06-29 16:41:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!