100分求能直接使用的Delphi 7 从 SQL Server 2005 按条件导出数据到 excel 的代码。条件1为直接案条件:年月日等查询候直接输出excel文档
条件2为在Delphi先做查询、累加计算再输出到excel文档分不够只有问他完美解决,我有多少分尽管提原因:本人不做这一行,不熟悉Delphi,因项目需要,只想完成这部分功能,其次没有过多的时间来专门学习,断断续续做了很长时间,没有实质进展,所以希望得到大家真正的帮助!那些讽刺、轻蔑的高手和无实质回答的朋友尊请绕道,谢谢!好人一生平安!

解决方案 »

  1.   

    找个相关功能的单元直接引用。http://download.csdn.net/source/607218如果不满意可去google搜索“delphi DBGrid to Excel”
      

  2.   

    首先你要连接sql,并取到相应的数据集,这个应该会弄吧
    下面就是逐个往excel中写了,可以创建原生对象,也可以使用delphi本身提供的excelapplication组件,这个网上很多,很容易搜到当然还有更省事的办法,用第三方表格组件(dxdbgrid,cxgrid,dbgrideh)等,直接连接你的数据集,这样可以通过表格存储为excel文件,这样还可以脱离office环境。
      

  3.   

    你是到处所见所得吗?具体的条件你自己给定吧。给你一个在不用到三方控件的情况下最省事的方案吧。在delphi7的servers控件栏中分别放上Texeclapplication、Texeclworkbook、Texeclworksheet三个控件,然后你随便搞个按钮加入以下代码:
    procedure TForm1.Button1Click(Sender: TObject);
    var
       i, row, column: integer;
    begin
       Try
         ExcelApplication1.Connect;
       Except
         MessageDlg('您的系统中还没有安装execl',mtError, [mbOk], 0);
         Abort;
       End;
       ExcelApplication1.Visible[0] := True;
       ExcelApplication1.Caption := 'Excel Application';
       ExcelApplication1.Workbooks.Add(Null, 0);
       ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
       ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
       DBGrid1.DataSource.DataSet.Open;
       row := 1;
       While Not (DBGrid1.DataSource.DataSet.Eof) do
       begin
         column := 1;
         for i := 1 to DBGrid1.DataSource.DataSet.FieldCount do
         begin
           ExcelWorksheet1.Cells.Item[row, column] := DBGrid1.DataSource.DataSet.fields[i - 1].AsString;
           column := column + 1;
         end;
         DBGrid1.DataSource.DataSet.Next;
         row := row + 1;
       end;
    end;
      

  4.   


    提示错误:project project1.exe raised exception class EAccessViolation with massage ‘access Violation at address 004ADC33 in module ’project1.exe‘ . Read of address 00000030’. Process Stopped. Use step or run to continue.
    怎么解决?另外:dxdbgrid 这个网上下来是个 .dll 文件,怎么使用?放到哪里使用?
      

  5.   

    这个就是使用的dbgrid控件,不用dxdbgrid
      

  6.   


    你好,上面的警告是上面意思?怎么处理?能加你QQ吗?这里好慢,好了我分还是在这里给你的。我的QQ:88378381