delphi--csv,txt文本转换成excel .

由于系统使用导出的格式是csv,但是如果数字的长度太长的话,用excle打开会用科学技术法自动截断了。所以开发了一个转换程序。

  1. unit Unit1;  
  2.   
  3.   
  4.   
  5. interface  
  6.   
  7.   
  8.   
  9. uses  
  10.   
  11.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  12.   
  13.   Dialogs, StdCtrls, ExtCtrls, ComCtrls, ComObj, StrUtils, WinSkinData,  
  14.   
  15.   WinSkinStore, Gauges, ShellApi, ClipBrd;  
  16.   
  17.   
  18.   
  19. type  
  20.   
  21.   TForm1 = class(TForm)  
  22.   
  23.     OpenDialog1: TOpenDialog;  
  24.   
  25.     SaveDialog1: TSaveDialog;  
  26.   
  27.     Panel1: TPanel;  
  28.   
  29.     Edit1: TEdit;  
  30.   
  31.     Edit2: TEdit;  
  32.   
  33.     Button1: TButton;  
  34.   
  35.     Button2: TButton;  
  36.   
  37.     Button3: TButton;  
  38.   
  39.     StatusBar1: TStatusBar;  
  40.   
  41.     SkinData1: TSkinData;  
  42.   
  43.     Timer1: TTimer;  
  44.   
  45.     Gauge1: TGauge;  
  46.   
  47.     progressBar: TProgressBar;  
  48.   
  49.     procedure Button1Click(Sender: TObject);  
  50.   
  51.     procedure Button2Click(Sender: TObject);  
  52.   
  53.     procedure Button3Click(Sender: TObject);  
  54.   
  55.     procedure FormPaint(Sender: TObject);  
  56.   
  57.     procedure StatusBar1DrawPanel(StatusBar: TStatusBar;  
  58.   
  59.       Panel: TStatusPanel; const Rect: TRect);  
  60.   
  61.     procedure FormCreate(Sender: TObject);  
  62.   
  63.     procedure Timer1Timer(Sender: TObject);  
  64.   
  65.   private  
  66.   
  67.     progressBarRect:TRect; // 进度条组件的尺寸   
  68.   
  69.   public  
  70.   
  71.     { Public declarations }  
  72.   
  73.     procedure   DropFiles(var   Message:   TMessage);   message   WM_DropFiles;  
  74.   
  75.   end;  
  76.   
  77.   
  78.   
  79. var  
  80.   
  81.   Form1: TForm1;  
  82.   
  83.   
  84.   
  85. implementation  
  86.   
  87.   
  88.   
  89. {$R *.dfm}  
  90.   
  91.   
  92.   
  93. procedure   TForm1.DropFiles(var   Message:   TMessage);    
  94.   
  95.   var    
  96.   
  97.       i,l:   Integer;  
  98.   
  99.       p:   array[0..254]   of   Char;  
  100.   
  101.       s:   String;  
  102.   
  103.   begin  
  104.   
  105.       i   :=   DragQueryFile(Message.wParam,   $FFFFFFFF,   nil,   0);    
  106.   
  107.       for   i   :=   0   to   i   -   1   do   begin    
  108.   
  109.           DragQueryFile(Message.wParam,   i,   p,   255);    
  110.   
  111.           //ShowMessage(StrPas(p));   
  112.   
  113.           s :=  StrPas(p);  
  114.   
  115.           l := Pos('.csv',s);  
  116.   
  117.           if (l > 0) then  
  118.   
  119.             Edit1.Text := StrPas(p)  
  120.   
  121.           else  
  122.   
  123.             ShowMessage('请选择csv文件!');  
  124.   
  125.       end;    
  126.   
  127.   end;     
  128.   
  129.   
  130.   
  131. procedure TForm1.Button1Click(Sender: TObject);  
  132.   
  133. begin  
  134.   
  135. StatusBar1.Panels[0].Text :='';  
  136.   
  137. OpenDialog1.Execute;  
  138.   
  139. Edit1.Text := OpenDialog1.FileName;  
  140.   
  141. end;  
  142.   
  143.   
  144.   
  145. procedure TForm1.Button2Click(Sender: TObject);  
  146.   
  147. begin  
  148.   
  149. StatusBar1.Panels[0].Text:='';  
  150.   
  151. SaveDialog1.Execute;  
  152.   
  153. Edit2.Text := SaveDialog1.FileName;  
  154.   
  155. end;  
  156.   
  157.   
  158.   
  159. procedure TForm1.Button3Click(Sender: TObject);  
  160.   
  161. var  
  162.   
  163.   Excel,WorkBook,xlQuery,A:Variant;  
  164.   
  165.   f:TextFile;  
  166.   
  167.   i,j,k,b,nLen:integer;  
  168.   
  169.   s,xlsFile:string;  
  170.   
  171.   pc:PChar;  
  172.   
  173.   StepCount : Integer;  
  174.   
  175.   vSL:   TStringList;  
  176.   
  177. begin  
  178.   
  179.     try  
  180.   
  181.           if   not   FileExists(Edit1.Text)   then  
  182.   
  183.           begin  
  184.   
  185.              StatusBar1.Panels[0].Text:='请选择CSV文件!!!!!!!';  
  186.   
  187.              exit;  
  188.   
  189.           end;  
  190.   
  191.           xlsFile := Edit1.Text;  
  192.   
  193.           xlsFile := AnsiReplaceText(xlsFile,'.csv','.xls');  
  194.   
  195.           if xlsFile = '' then  
  196.   
  197.           begin  
  198.   
  199.              StatusBar1.Panels[0].Text:='请选择另存为Excel!!!!!!!';  
  200.   
  201.              Exit;  
  202.   
  203.           end;  
  204.   
  205.           //AssignFile(f,Edit1.Text);   
  206.   
  207.           //Reset(f);   
  208.   
  209.           vSL   :=   TStringList.Create;  
  210.   
  211.           //vSL.Delimiter=',';   
  212.   
  213.           vSL.LoadFromFile(Edit1.Text);  
  214.   
  215.           try  
  216.   
  217.             Excel:=CreateOleObject('Excel.Application');  
  218.   
  219.             WorkBook:=CreateOleobject('Excel.Sheet');  
  220.   
  221.           except  
  222.   
  223.             ShowMessage('您的机器里未安装Microsoft Excel.');  
  224.   
  225.             Exit;  
  226.   
  227.           end;  
  228.   
  229.           //动态创建进度条组件progressBar   
  230.   
  231.   
  232.   
  233.           StepCount:=vSL.Count; // 循环的总数目   
  234.   
  235.           timer1.Enabled:=true;  
  236.   
  237.           with progressBar do  
  238.   
  239.           begin  
  240.   
  241.           // 先确定进度条组件的尺寸和位置   
  242.   
  243.           Top:=ProgressBarRect.Top;  
  244.   
  245.           Left:=ProgressBarRect.Left;  
  246.   
  247.           Width:=ProgressBarRect.Right-ProgressBarRect.Left;  
  248.   
  249.           Height:=ProgressBarRect.Bottom-ProgressBarRect.Top;  
  250.   
  251.           Parent:=StatusBar1; // parent属性设置为状态栏组件   
  252.   
  253.           Visible:=True; // 使进度条可见             
  254.   
  255.           Min:=0;// 设定进度条的范围和步长   
  256.   
  257.           Max:=StepCount div 300;  
  258.   
  259.           Step:=1;  
  260.   
  261.           end;  
  262.   
  263.           //pb.Visible := true;   
  264.   
  265.           WorkBook := Excel.workbooks.add;  
  266.   
  267.           Excel.worksheets[1].activate;  
  268.   
  269.           Excel.Visible:=false;  
  270.   
  271. //          Clipboard.AsText:=vSL.Text;   
  272.   
  273.           //计算有多少列   
  274.   
  275.           s:=vSL[0];  
  276.   
  277.           pc := PChar(s);  
  278.   
  279.           k:=0;  
  280.   
  281.           b:=1;  
  282.   
  283.           j:=1;  
  284.   
  285.           nLen := strlen(pc);  
  286.   
  287.           while k<nLen do  
  288.   
  289.               begin;  
  290.   
  291.                 if pc[k] = ',' then  
  292.   
  293.                 begin  
  294.   
  295.                   inc(j);  
  296.   
  297.                 end;  
  298.   
  299.                 inc(k);  
  300.   
  301.           end;  
  302.   
  303.   
  304.   
  305.         A:=VarArrayCreate([0,j],varVariant);  
  306.   
  307.         for   i:=0   to   j   do  
  308.   
  309.              A[i]:=2;  
  310.   
  311.   
  312.   
  313.         xlQuery := Excel.worksheets[1].QueryTables.Add('TEXT;'+Edit1.Text,Excel.worksheets[1].Range['A1']);  
  314.   
  315.         //xlQuery.Name := '';   
  316.   
  317.         xlQuery.FieldNames := True;  
  318.   
  319.         xlQuery.RowNumbers := False;  
  320.   
  321.         xlQuery.FillAdjacentFormulas := False;  
  322.   
  323.         xlQuery.PreserveFormatting := True;  
  324.   
  325.         xlQuery.RefreshOnFileOpen := False;  
  326.   
  327.         //xlQuery.RefreshStyle := 'xlInsertDeleteCells';   
  328.   
  329.         xlQuery.SavePassword := False;  
  330.   
  331.         xlQuery.SaveData := True;  
  332.   
  333.         xlQuery.AdjustColumnWidth := True;  
  334.   
  335.         xlQuery.RefreshPeriod := 0;  
  336.   
  337.         xlQuery.TextFilePromptOnRefresh := False;  
  338.   
  339.         xlQuery.TextFilePlatform := 936;  
  340.   
  341.         xlQuery.TextFileStartRow := 1;  
  342.   
  343.         //xlQuery.TextFileParseType := 'xlDelimited';   
  344.   
  345.         //xlQuery.TextFileTextQualifier := 'xlTextQualifierDoubleQuote';   
  346.   
  347.         xlQuery.TextFileConsecutiveDelimiter := False;  
  348.   
  349.         xlQuery.TextFileTabDelimiter := False;  
  350.   
  351.         xlQuery.TextFileSemicolonDelimiter := False;  
  352.   
  353.         xlQuery.TextFileCommaDelimiter := True;  
  354.   
  355.         xlQuery.TextFileSpaceDelimiter := False;  
  356.   
  357.         xlQuery.TextFileColumnDataTypes := A;  
  358.   
  359.         xlQuery.TextFileTrailingMinusNumbers := True;  
  360.   
  361.         xlQuery.Refresh;  
  362.   
  363.           if   FileExists(xlsFile)   then  
  364.   
  365.               DeleteFile(xlsFile);  
  366.   
  367. //          Excel.worksheets[1].Paste;   
  368.   
  369.           WorkBook.SaveAs(xlsFile);  
  370.   
  371.           StatusBar1.Panels[0].Text:='转换成功!!!!!!!';  
  372.   
  373.           progressBar.Visible:=false;  
  374.   
  375.     finally  
  376.   
  377.       if   vSL<>nil then  
  378.   
  379.         vSL.Free;  
  380.   
  381.       if not VarIsEmpty(WorkBook) then WorkBook.close;  
  382.   
  383.       if not VarIsEmpty(Excel) then Excel.quit;  
  384.   
  385.       //if not VarIsEmpty(A) then varfree(A);   
  386.   
  387.       timer1.Enabled:=false;  
  388.   
  389.     end;  
  390.   
  391. end;  
  392.   
  393.   
  394.   
  395. procedure TForm1.FormPaint(Sender: TObject);  
  396.   
  397. begin  
  398.   
  399. StatusBar1.Panels[0].Text:='中国建设银行版权所有..........';  
  400.   
  401.   
  402.   
  403. end;  
  404.   
  405.   
  406.   
  407. procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;  
  408.   
  409.   Panel: TStatusPanel; const Rect: TRect);  
  410.   
  411. begin  
  412.   
  413. progressBarRect:=Rect;  
  414.   
  415. end;  
  416.   
  417.   
  418.   
  419. procedure TForm1.FormCreate(Sender: TObject);  
  420.   
  421. begin  
  422.   
  423. DragAcceptFiles(Handle,   True);  
  424.   
  425. end;  
  426.   
  427.   
  428.   
  429. procedure TForm1.Timer1Timer(Sender: TObject);  
  430.   
  431. begin  
  432.   
  433.      progressBar.Stepit;       
  434.   
  435.           //Application.ProcessMessages;   
  436.   
  437.           //Sleep(ProgressBar.Position);   
  438.   
  439. end;  
  440.   
  441.   
  442.   
  443. end.  
unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls, ComCtrls, ComObj, StrUtils, WinSkinData,

  WinSkinStore, Gauges, ShellApi, ClipBrd;



type

  TForm1 = class(TForm)

    OpenDialog1: TOpenDialog;

    SaveDialog1: TSaveDialog;

    Panel1: TPanel;

    Edit1: TEdit;

    Edit2: TEdit;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    StatusBar1: TStatusBar;

    SkinData1: TSkinData;

    Timer1: TTimer;

    Gauge1: TGauge;

    progressBar: TProgressBar;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure FormPaint(Sender: TObject);

    procedure StatusBar1DrawPanel(StatusBar: TStatusBar;

      Panel: TStatusPanel; const Rect: TRect);

    procedure FormCreate(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

  private

    progressBarRect:TRect; // 进度条组件的尺寸

  public

    { Public declarations }

    procedure   DropFiles(var   Message:   TMessage);   message   WM_DropFiles;

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure   TForm1.DropFiles(var   Message:   TMessage);  

  var  

      i,l:   Integer;

      p:   array[0..254]   of   Char;

      s:   String;

  begin

      i   :=   DragQueryFile(Message.wParam,   $FFFFFFFF,   nil,   0);  

      for   i   :=   0   to   i   -   1   do   begin  

          DragQueryFile(Message.wParam,   i,   p,   255);  

          //ShowMessage(StrPas(p));

          s :=  StrPas(p);

          l := Pos('.csv',s);

          if (l > 0) then

            Edit1.Text := StrPas(p)

          else

            ShowMessage('请选择csv文件!');

      end;  

  end;   



procedure TForm1.Button1Click(Sender: TObject);

begin

StatusBar1.Panels[0].Text :='';

OpenDialog1.Execute;

Edit1.Text := OpenDialog1.FileName;

end;



procedure TForm1.Button2Click(Sender: TObject);

begin

StatusBar1.Panels[0].Text:='';

SaveDialog1.Execute;

Edit2.Text := SaveDialog1.FileName;

end;



procedure TForm1.Button3Click(Sender: TObject);

var

  Excel,WorkBook,xlQuery,A:Variant;

  f:TextFile;

  i,j,k,b,nLen:integer;

  s,xlsFile:string;

  pc:PChar;

  StepCount : Integer;

  vSL:   TStringList;

begin

    try

          if   not   FileExists(Edit1.Text)   then

          begin

             StatusBar1.Panels[0].Text:='请选择CSV文件!!!!!!!';

             exit;

          end;

          xlsFile := Edit1.Text;

          xlsFile := AnsiReplaceText(xlsFile,'.csv','.xls');

          if xlsFile = '' then

          begin

             StatusBar1.Panels[0].Text:='请选择另存为Excel!!!!!!!';

             Exit;

          end;

          //AssignFile(f,Edit1.Text);

          //Reset(f);

          vSL   :=   TStringList.Create;

          //vSL.Delimiter=',';

          vSL.LoadFromFile(Edit1.Text);

          try

            Excel:=CreateOleObject('Excel.Application');

            WorkBook:=CreateOleobject('Excel.Sheet');

          except

            ShowMessage('您的机器里未安装Microsoft Excel.');

            Exit;

          end;

          //动态创建进度条组件progressBar



          StepCount:=vSL.Count; // 循环的总数目

          timer1.Enabled:=true;

          with progressBar do

          begin

          // 先确定进度条组件的尺寸和位置

          Top:=ProgressBarRect.Top;

          Left:=ProgressBarRect.Left;

          Width:=ProgressBarRect.Right-ProgressBarRect.Left;

          Height:=ProgressBarRect.Bottom-ProgressBarRect.Top;

          Parent:=StatusBar1; // parent属性设置为状态栏组件

          Visible:=True; // 使进度条可见          

          Min:=0;// 设定进度条的范围和步长

          Max:=StepCount div 300;

          Step:=1;

          end;

          //pb.Visible := true;

          WorkBook := Excel.workbooks.add;

          Excel.worksheets[1].activate;

          Excel.Visible:=false;

//          Clipboard.AsText:=vSL.Text;

          //计算有多少列

          s:=vSL[0];

          pc := PChar(s);

          k:=0;

          b:=1;

          j:=1;

          nLen := strlen(pc);

          while k<nLen do

              begin;

                if pc[k] = ',' then

                begin

                  inc(j);

                end;

                inc(k);

          end;



        A:=VarArrayCreate([0,j],varVariant);

        for   i:=0   to   j   do

             A[i]:=2;



        xlQuery := Excel.worksheets[1].QueryTables.Add('TEXT;'+Edit1.Text,Excel.worksheets[1].Range['A1']);

        //xlQuery.Name := '';

        xlQuery.FieldNames := True;

        xlQuery.RowNumbers := False;

        xlQuery.FillAdjacentFormulas := False;

        xlQuery.PreserveFormatting := True;

        xlQuery.RefreshOnFileOpen := False;

        //xlQuery.RefreshStyle := 'xlInsertDeleteCells';

        xlQuery.SavePassword := False;

        xlQuery.SaveData := True;

        xlQuery.AdjustColumnWidth := True;

        xlQuery.RefreshPeriod := 0;

        xlQuery.TextFilePromptOnRefresh := False;

        xlQuery.TextFilePlatform := 936;

        xlQuery.TextFileStartRow := 1;

        //xlQuery.TextFileParseType := 'xlDelimited';

        //xlQuery.TextFileTextQualifier := 'xlTextQualifierDoubleQuote';

        xlQuery.TextFileConsecutiveDelimiter := False;

        xlQuery.TextFileTabDelimiter := False;

        xlQuery.TextFileSemicolonDelimiter := False;

        xlQuery.TextFileCommaDelimiter := True;

        xlQuery.TextFileSpaceDelimiter := False;

        xlQuery.TextFileColumnDataTypes := A;

        xlQuery.TextFileTrailingMinusNumbers := True;

        xlQuery.Refresh;

          if   FileExists(xlsFile)   then

              DeleteFile(xlsFile);

//          Excel.worksheets[1].Paste;

          WorkBook.SaveAs(xlsFile);

          StatusBar1.Panels[0].Text:='转换成功!!!!!!!';

          progressBar.Visible:=false;

    finally

      if   vSL<>nil then

        vSL.Free;

      if not VarIsEmpty(WorkBook) then WorkBook.close;

      if not VarIsEmpty(Excel) then Excel.quit;

      //if not VarIsEmpty(A) then varfree(A);

      timer1.Enabled:=false;

    end;

end;



procedure TForm1.FormPaint(Sender: TObject);

begin

StatusBar1.Panels[0].Text:='中国建设银行版权所有..........';



end;



procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;

  Panel: TStatusPanel; const Rect: TRect);

begin

progressBarRect:=Rect;

end;



procedure TForm1.FormCreate(Sender: TObject);

begin

DragAcceptFiles(Handle,   True);

end;



procedure TForm1.Timer1Timer(Sender: TObject);

begin

     progressBar.Stepit;     

          //Application.ProcessMessages;

          //Sleep(ProgressBar.Position);

end;



end.

原来使用的是

[csharp] view plain copy print ?
  1.          for i:=1 to StepCount do  
  2.   
  3.           begin  
  4.   
  5.             //Readln(f,s);   
  6.   
  7.             progressBar.Stepit;// 循环使进度显示条累加   
  8.   
  9.             s:=vSL[i-1];  
  10.   
  11.             pc := PChar(s);  
  12.   
  13.             k:=0;  
  14.   
  15.             b:=1;  
  16.   
  17.             j:=0;  
  18.   
  19.             nLen := strlen(pc);  
  20.   
  21.             while k<nLen do  
  22.   
  23.               begin;  
  24.   
  25.                 if pc[k] = ',' then  
  26.   
  27.                 begin  
  28.   
  29.                   inc(j);  
  30.   
  31.                   Excel.cells[i,j].NumberFormat:='@';  
  32.   
  33.                   Excel.cells[i,j].value:=Copy(s,b,k-b+1);  
  34.   
  35.                   b:=k+2;  
  36.   
  37.                 end;  
  38.   
  39.                 inc(k);  
  40.   
  41.             end;  
  42.   
  43.             inc(j);  
  44.   
  45.             Excel.cells[i,j].NumberFormat:='@';  
  46.   
  47.             Excel.cells[i,j].value:=Copy(s,b,k-b+1);  
  48.   
  49.           end;  
  50.   
  51. 上面的代码是遍历整个文件,判断是否有逗号,然后对每个格子插入数据。这样做的效率很低,  
  52. 3千多行的数据转换用了5分钟。后来使用vba,先用excle录制了一段外部数据导入的宏。  
  53. <PRE class=vb.net name="code">Sub Macro3()  
  54.   
  55. '  
  56.   
  57. ' Macro3 Macro  
  58.   
  59. ' 宏由 ZHL 录制,时间: 2008-7-3  
  60.   
  61. '  
  62.   
  63.   
  64.   
  65. '  
  66.   
  67.     Cells.Select  
  68.   
  69.     With ActiveSheet.QueryTables.Add(Connection:= _  
  70.   
  71.         "TEXT;C:/Documents and Settings/zhl/桌面/200807021528053658.csv", Destination:= _  
  72.   
  73.         Range("A1"))  
  74.   
  75.         .Name = "200807021528053658_1"  
  76.   
  77.         .FieldNames = True  
  78.   
  79.         .RowNumbers = False  
  80.   
  81.         .FillAdjacentFormulas = False  
  82.   
  83.         .PreserveFormatting = True  
  84.   
  85.         .RefreshOnFileOpen = False  
  86.   
  87.         .RefreshStyle = xlInsertDeleteCells  
  88.   
  89.         .SavePassword = False  
  90.   
  91.         .SaveData = True  
  92.   
  93.         .AdjustColumnWidth = True  
  94.   
  95.         .RefreshPeriod = 0  
  96.   
  97.         .TextFilePromptOnRefresh = False  
  98.   
  99.         .TextFilePlatform = 936  
  100.   
  101.         .TextFileStartRow = 1  
  102.   
  103.         .TextFileParseType = xlDelimited  
  104.   
  105.         .TextFileTextQualifier = xlTextQualifierDoubleQuote  
  106.   
  107.         .TextFileConsecutiveDelimiter = False  
  108.   
  109.         .TextFileTabDelimiter = False  
  110.   
  111.         .TextFileSemicolonDelimiter = False  
  112.   
  113.         .TextFileCommaDelimiter = True  
  114.   
  115.         .TextFileSpaceDelimiter = False  
  116.   
  117.         .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _  
  118.   
  119.         2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)  
  120.   
  121.         .TextFileTrailingMinusNumbers = True  
  122.   
  123.         .Refresh BackgroundQuery:=False  
  124.   
  125.     End With  
  126.   
  127. End Sub  
  128.   
  129. 然后根据上面的宏写了如下的delphi代码:  
  130. <PRE class=csharp name="code">        xlQuery := Excel.worksheets[1].QueryTables.Add('TEXT;'+Edit1.Text,Excel.worksheets[1].Range['A1']);  
  131.   
  132.         //xlQuery.Name := '';   
  133.   
  134.         xlQuery.FieldNames := True;  
  135.   
  136.         xlQuery.RowNumbers := False;  
  137.   
  138.         xlQuery.FillAdjacentFormulas := False;  
  139.   
  140.         xlQuery.PreserveFormatting := True;  
  141.   
  142.         xlQuery.RefreshOnFileOpen := False;  
  143.   
  144.         //xlQuery.RefreshStyle := 'xlInsertDeleteCells';   
  145.   
  146.         xlQuery.SavePassword := False;  
  147.   
  148.         xlQuery.SaveData := True;  
  149.   
  150.         xlQuery.AdjustColumnWidth := True;  
  151.   
  152.         xlQuery.RefreshPeriod := 0;  
  153.   
  154.         xlQuery.TextFilePromptOnRefresh := False;  
  155.   
  156.         xlQuery.TextFilePlatform := 936;  
  157.   
  158.         xlQuery.TextFileStartRow := 1;  
  159.   
  160.         //xlQuery.TextFileParseType := 'xlDelimited';   
  161.   
  162.         //xlQuery.TextFileTextQualifier := 'xlTextQualifierDoubleQuote';   
  163.   
  164.         xlQuery.TextFileConsecutiveDelimiter := False;  
  165.   
  166.         xlQuery.TextFileTabDelimiter := False;  
  167.   
  168.         xlQuery.TextFileSemicolonDelimiter := False;  
  169.   
  170.         xlQuery.TextFileCommaDelimiter := True;  
  171.   
  172.         xlQuery.TextFileSpaceDelimiter := False;  
  173.   
  174.         xlQuery.TextFileColumnDataTypes := A;  
  175.   
  176.         xlQuery.TextFileTrailingMinusNumbers := True;  
  177.   
  178.         xlQuery.Refresh;</PRE>  
  179. 使用excle的导入功能后转换原来的文件之用了10秒钟。</PRE>  

转载于:https://www.cnblogs.com/hssbsw/archive/2012/12/02/2798322.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值