想作一个程序,将每天的Excel日报表导入数据库,经过修改排序等工作,输出Excel旬报表和月报表。请问如何进行。(关键是不会导入导出)http://expert.csdn.net/Expert/topic/1604/1604262.xml?temp=.2761499 上的两段程序注释太少看不明白。(以前没接触过这方面的东西)
直接用bde或者ado连接excel文件时显示“测试连接失败,因为初始化提供程序时发生错误[Microsoft][ODBC Excel Driver]外部表不是预期的格式。”
直接在Access中用“文件——获取外部数据——导入”提示:向导无法访问文件‘×××××××××’中的信息,请确定文件存在且格式正确。请哪位大侠能帮我好好讲讲,或给我发一个简单的例子。[email protected]
谢了!!

解决方案 »

  1.   

    可以的
    1。可以把excel做为数据库
    2。可以把access数据库导出excel表给你个例子看看
    procedure Twmbx.Button3Click(Sender: TObject);
    var
      e:variant;
      i,j:integer;
    begin
      e:=createoleobject('excel.application');
      e.visible:=true;
      e.caption:='网慢';
      e.workbooks.add;   e.activesheet.rows[1].font.bold:=true;   //第一行列名属性设置;
       e.activesheet.rows[1].font.color:=clred;
       for j:=0 to data.wmbxb.FieldCount-2 do   //第一行列名;
       begin
       e.cells[1,j+1].value:=data.wmbxb.Fields[j].FieldName ;
       next;
       end;   data.wmbxb.first;                         //导出内容;
       for i:=1 to data.wmbxb.recordcount do
        begin
          begin
           for j:=0 to data.wmbxb.FieldCount-2 do //-2 代表把back列放弃;
           begin
            e.cells[i+2,j+1].value:=data.wmbxb.Fields[j].AsString ;
           next;
           end;
          end;
          data.wmbxb.next;
          next;
        end;
       ShowMessage('数据导出成功');
         e.workbooks.close;
         e.quit;
    end;
      

  2.   

    使用循环太慢了,试试这个:
    http://expert.csdn.net/Expert/topic/1909/1909498.xml?temp=4.985988E-03
      

  3.   

    excel怎么作为一个数据库?
    直接用bde或者ado通过ODBC连接excel文件时显示“测试连接失败,因为初始化提供程序时发生错误[Microsoft][ODBC Excel Driver]外部表不是预期的格式。”
      

  4.   

    怎么保存为access,我在另存为里没有看到啊?
      

  5.   

    使用ADO连接需要设置连接字符串属性中Extended Properties为Excel 8.0即可
      

  6.   

    我用ADO连上了,但是用Table的话Active属性不可以激活,用Query的话显示From语句错误。但我感觉SQL语句没错。
    select * from 2003-07-03服务类型日月年;"2003-07-03服务类型日月年"是excel表里sheet的名字
      

  7.   

    思路:首先用ado将excel数据表,然后在想操作普通的数据表一样操作就可以了:方法:
    http://218.56.9.158/default.aspx
    下载基地->动态调用Excel数据表;
    下载一下参考吧。注意事项:
    在用ado将excel连上数据表后,调试必须退出delphi,在外边直接执行exe,否则报错。
      

  8.   

    有很多类似的问题了。再贴一次吧。
    procedure TForm1.Button5Click(Sender: TObject);
    var
    ExcelApp,MyWorkBook,mysheet:Variant;
    i :byte;
    s: string;
    begin
    try
    ExcelApp:=CreateOleObject('Excel.Application');
    MyWorkBook:=CreateOleobject('Excel.Sheet');
    //? MyWorkBook:=ExcelApp.workbooks.open('C:\Book1.xls');
    except
    on Exception do raise exception.Create('无法打开Xls文件,请确认已 经安装EXCEL')
    end;
    ExcelApp.Visible := true;
    //? mysheet:=MyWorkBook.WorkSheets[1].name;MyworkBook:=ExcelApp.workBooks.Add;//在此处插入读数据库及写Excel文档的代码
    //其中写Excel文档的关键语句如下:
    Myworkbook.worksheets[1].range['A1:D1'].Merge(True);
    Myworkbook.worksheets[1].range['A1:D2'].HorizontalAlignment := $FFFFEFF4;
    MyWorkBook.WorkSheets[1].Cells[1,1].Value := 'YourTitle';i := 2;
    MyWorkBook.WorkSheets[1].Cells[i,1].Value := 'yourCaption1';
    MyWorkBook.WorkSheets[1].Cells[i,2].Value := 'yourCaption2';
    MyWorkBook.WorkSheets[1].Cells[i,3].Value := 'yourCaption3';
    MyWorkBook.WorkSheets[1].Cells[i,4].Value := 'yourCaption4';
    Myworkbook.worksheets[1].Range['A1:D2'].Font.Color := clBlue;
    Myworkbook.worksheets[1].Range['A1:D1'].Font.Name := '隶书';
    Myworkbook.worksheets[1].Range['A1:D1'].Font.Size := 18;
    i := 3;
    table1.close;
    table1.open;
    table1.First;
    while not table1.eof do begin
    MyWorkBook.WorkSheets[1].Cells[i,1].Value := table1.FieldByName('au_id').AsString;
    MyWorkBook.WorkSheets[1].Cells[i,2].Value := table1.FieldByName('royaltyper').AsInteger;
    MyWorkBook.WorkSheets[1].Cells[i,3].Value := table1.FieldByName('au_ord').AsInteger;
    MyWorkBook.WorkSheets[1].Cells[i,4].Value := table1.FieldByName('title_id').AsString;
    Inc(i);
    table1.Next
    end;
    ExcelApp.Visible := true;s := 'A3:D'+ IntToStr(i-1);//设定字体. 栏宽等
    s := 'A1:D'+ IntToStr(i-1);
    Myworkbook.worksheets[1].Columns[1].ColumnWidth := 20;
    Myworkbook.worksheets[1].Columns[4].ColumnWidth := 25;
    Myworkbook.worksheets[1].Rows[1].RowHeight := 50;
    Myworkbook.worksheets[1].Rows[1].VerticalAlignment := $FFFFEFF4;Myworkbook.worksheets[1].Range[s].Font.Name := '仿宋';
    s := 'A2:D'+ IntToStr(i-1);
    Myworkbook.worksheets[1].Range[s].Borders.LineStyle := 1;
    //页面设置
    MyworkBook.WorkSheets[1].PageSetup.CenterHorizontally := true;
    Myworkbook.worksheets[1].pagesetup.PrintTitleRows := 'A1';
    //不能设置 papersize 属性, 原因不明
    //MyworkBook.WorkSheets[1].PageSetup.PaperSize := $9;try
    MyWorkBook.saveas('c:\' + Edit1.Text + '.xls');
    MyWorkBook.close;
    except //当存为一个已有的文档而又不覆盖时将
    MyWorkBook.close; //产生一个例外
    end;
    ExcelApp.Quit;
    ExcelApp:=Unassigned; //释放VARIANT变量end;把excel里的输到access里,反过来就行了