1、怎样实现将access数据导入excel中,或者将access表生成txt文件?
2、怎样将txt文件或者excel中的数据导入access中去?

解决方案 »

  1.   

    1\dbgrid导入word,excel:
    procedure SaveToExcelFile(DbgridName: TDbGrid);
    var
      XLApp: Variant;
      Sheet: Variant;
      WordApp,WordDoc,WordParagraph,WordRange,WordTable:variant;
      I, J: Integer;
      SaveDialog:TSaveDialog;
      pBookMark: TBookMark;
      StrSaveFile:string;
      IntFileType:integer;
      SltRec,SltCol :integer;
      ColIndex,RowIndex : Integer;
    begin
         if dbgridname.DataSource.DataSet.IsEmpty then begin
            messagebox(application.Handle,'没有任何数据,不能进行保存',
                       '警告',mb_ok);
            abort;
         end;
         SaveDialog:=TSaveDialog.Create(Nil);
         SaveDialog.Filter := 'Microsoft Excel 文件|*.xls|Microsoft Word 文件|*.doc';
         SaveDialog.Execute;
         IntFileType:=SaveDialog.FilterIndex;
         StrSaveFile:=SaveDialog.FileName;
         if length(StrSaveFile)=0 then exit;
         try
           screen.Cursor:=crHourGlass;
           case  IntFileType  of
              1: begin
                    try
                      XLApp := CreateOleObject('Excel.Application');
                      XLApp.WorkBooks.Add(-4167);
                      XLApp.WorkBooks[1].WorkSheets[1].Name := '导出数据';
                      Sheet := XLApp.WorkBooks[1].WorkSheets['导出数据'];
                      J := 1;
                    except
                        MessageBox(GetActiveWindow,'无法调用Mircorsoft Excel! '+chr(13)+chr(10)+
                                 '请检查是否安装了Mircorsoft Excel。','提示',MB_OK+MB_ICONINFORMATION);
                        Exit;
                    end;
                    with Dbgridname.DataSource.DataSet do
                    begin
                      pBookMark := GetBook;
                      DisableControls;
                      for I:=0 to dbgridname.Columns.Count-1 do
                      begin
                         if dbgridname.Columns[I].Visible=False then
                            Continue;
                         Sheet.Cells[J,I+1] := dbgridname.Columns[I].Title.Caption;
                      end;
                      Inc(J);
                      First;
                      while not Eof do  begin
                            for I:=0 to dbgridname.Columns.Count-1 do begin
                                if dbgridname.Columns[I].Visible=False then
                                   Continue;
                                Sheet.Cells[J,I+1] := trim(dbgridname.DataSource.DataSet.Fieldbyname(dbgridname.Columns[i].FieldName).asstring);
                            end;
                            Inc(J);
                            Next;
                      end;
                      GotoBook(pBookMark);
                      FreeBook(pBookMark);
                      EnableControls;
                    end;
                    XLApp.activeworkbook.saveas(StrSaveFile);
                    Application.ProcessMessages;
                    XLApp.Application.Quit;
                end;
          2:  begin
              try
                if VarIsEmpty(WordApp) then
                  WordApp := CreateOleObject('word.Application');
                  WordDoc := WordApp.documents.add;
                  WordParagraph := WordApp.activedocument.paragraphs.add;
                  WordRange := WordParagraph.range;
                  WordRange.Font.Size := 15;
                  WordRange.Font.Name := '宋体';
              except
                   MessageBox(GetActiveWindow,'无法调用Mircorsoft Word! '+chr(13)+chr(10)+
                             '请检查是否安装了Mircorsoft Word。','提示',MB_OK+MB_ICONINFORMATION);
                   Abort;
              end;
              SltRec:=dbgridname.SelectedRows.Count;
              SltCol := 0;
              for j := 0 to dbgridname.Columns.Count-1 do begin
                  if dbgridname.Columns[J].Visible then
                     SltCol := SltCol +1;
              end;          WordRange := WordApp.ActiveDocument.Content;
              WordTable:= WordApp.activedocument.tables.add(WordRange,SltRec + 1,SltCol);
              ColIndex := 1;          for j := 0 to dbgridname.Columns.Count-1  do begin
                  if (dbgridname.Columns[j].Visible = false) then
                     Continue;
                  WordTable.Cell(1,ColIndex).Range.InsertAfter(dbgridname.Columns[j].Title.Caption);
                  ColIndex := ColIndex + 1;
              end;          RowIndex := 2;
              ColIndex := 1;
              with  dbgridname.DataSource.DataSet do begin
                    First;
                    pBookMark := GetBook;
                    DisableControls;
                    while not Eof do  begin
                          for j := 0 to dbgridname.Columns.Count-1 do begin
                            if (dbgridname.Columns[j].Visible<>false) then
                            begin
                                WordTable.Cell(RowIndex,ColIndex).Range.InsertAfter
                                (dbgridname.DataSource.DataSet.Fieldbyname(dbgridname.Columns[j].FieldName).asstring);
                                ColIndex := ColIndex + 1;
                             end;
                          end;
                          RowIndex := RowIndex + 1;
                          ColIndex := 1;
                          Next;
                    end;
                    GotoBook(pBookMark);
                    FreeBook(pBookMark);
                    EnableControls;
              end;
              WordApp.activedocument.saveas(StrSaveFile);
              Application.ProcessMessages;
              WordApp.Application.Quit;
            end;
         end;
        Finally
           SaveDialog.Free;
           screen.Cursor:=crDefault;
        end;
    end;
    2\http://www.china-pub.com/computers/emook/1134/info.htm
      

  2.   

    不用编程也可以实现
    1、利用excel的导入数据的功能可轻松将所有ODBC支持的数据库导入。
    2、将文本中的数据按类型以豆号隔开,修改成csv格式的,然后利用access的数据导入功能,同样可将所有ODBC支持的数据库导入。
      

  3.   

    1,打开access,新建一个空库。
    2,在设计表的界面,单击“新建”选择“导入表”。
    3,在导入的对话框里,将文件类型的下拉列表框选择你的源数据文件类型,这里就有excel 和 文本的。