打开-excel转化为xml的过程

来源:互联网 发布:出纳怎么用金蝶软件 编辑:程序博客网 时间:2024/05/16 05:15

procedure TActiveFormX_Open_Excel.btn1Click(Sender: TObject);
var
   EX ,Ws:    Variant;
   fn: String;
   i:  integer;
   str_in_code: Tstringlist;
   str_in_code_11: string;
   str_in_code_22:string ;
   Str_string : TStringStream ;
   ErrorMsg :String;
   InputStream,OutStream :TMemoryStream;
  // ii: Integer ;
begin
   Str_string:= TStringStream.Create('');
   str_in_code_copy:=TStringList.Create ;
   str_in_code_copy.Text :='';
   Out_xml_str:='';
   str_in_code:=TStringList.Create ;
   str_in_code.Text:='';
   i:=2;
   dlgOpen1.Title :='请选择Excel文件';
   dlgOpen1.Filter := 'Excel表(*.xls)|*.xls';
   dlgOpen1.DefaultExt := 'xls';
   str_in_code_11 :='<?xml version="1.0" encoding="gb2312"?><data><user>'+in_code_str+'</user><courseNo>'+in_code_str_2+'</courseNo><list>';
   str_in_code_22:= '</list>'+'</data>';
   if dlgOpen1.Execute =True then
      begin
        Try
           Try
                    fn := dlgOpen1.FileName;
                    EX := CreateOleObject('Excel.Application');
                    EX.Visible:=False;
                    EX.DisplayAlerts:=False;
                    Try
                      Ws:=Ex.WorkBooks.Open(fn,3,false,1,str_PassWord);   //Z3pramM=
                     // Ws:=Ex.WorkBooks.Open(fn,3,false,1,'gzkjc'); //MTIz
                      //ShowMessage(IntToStr(EX.Worksheets[1].UsedRange.Rows.Count));
                    except
                       ShowMessage('密码错误');
                    End;
                    Cds1.Active :=False;
                    Out_xml_str_copy:='';
                 //   repeat
                   pb1.Visible :=True;
                   pb1.Min :=0;
                   pb1.Max :=  EX.Worksheets[1].UsedRange.Rows.Count;
                   for i:=2  to  EX.Worksheets[1].UsedRange.Rows.Count do
                    Begin
                      if Ws.ActiveSheet.Cells[i,4].Text <>'' then
                          Begin
                             str_in_code.Text :=str_in_code.Text+'<stu name='
                             +#39+ Ws.ActiveSheet.Cells[i,1].Text +#39+' sex='
                             +#39+ Ws.ActiveSheet.Cells[i,2].Text +#39+' stuNo='
                             +#39+ Ws.ActiveSheet.Cells[i,3].Text +#39+' stuCertNo='
                             +#39+ Ws.ActiveSheet.Cells[i,4].Text +#39+' score='
                             +#39+ Ws.ActiveSheet.Cells[i,5].Text +#39+'/>';
                             pb1.Position :=i -10 ;
                           End;
                      End;
                    str_in_code.Text:= str_in_code_11+str_in_code.Text+ str_in_code_22;
                    Str_string.WriteString(str_in_code.Text);
                    //-----------生成需要的数据
                      InputStream := TMemoryStream.Create;
                      Str_string.Position := 0;
                      InputStream.CopyFrom(Str_string,Str_string.Size );
                      OutStream := TMemoryStream.Create;
                        try
                       // HttpPostData(InputStream,OutStream,@ErrorMsg,'192.168.2.171','8080','GzczPrint/EmplXmlTransServlet',@ShowProcess);
                        HttpPostData(InputStream,OutStream,@ErrorMsg,out_ip,out_pot ,out_ServletName ,@ShowProcess);
                        pb1.Position :=   EX.Worksheets[1].UsedRange.Rows.Count;
                        pb1.Visible :=False;
                        if @ErrorMsg<>nil    then
                           Begin
                             code_result:='1';
                           End
                        Else
                           Begin
                            //ShowMessage('成功');
                            ShowMessage('数据上传没有成功');
                            code_result:='0';
                           end;
                        finally
                          InputStream.Free;
                          OutStream.Free;
                        end;
                        Str_string.Free ;
           except
               EX.Quit;
           End;
        finally
          Ex.Quit;
        End;
      end
   Else
       exit;

end;

原创粉丝点击