CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

100分求教: 多条记录导入 Excel的问题。。。。。。。。。。。分不够再加

楼主haohua(渴望成为高手的--菜鸟)2005-04-04 16:45:54 在 Delphi / 数据库相关 提问

我的记录结构:  
   
  ID 性名 性别 地址 ID2  
   
  导出到Excel的结构:  
   
  性名 性别 地址 年龄 备注  
   
  要一条一条的导入!!!  
   
  请各位高手详细说明一下,我是菜菜。。。谢谢了。。。 问题点数:100、回复次数:8Top

1 楼yesania(yesania)回复于 2005-04-04 17:08:45 得分 10

先用query把要插入的数据选出来,放个支持excel的控件,(ExpressSpreadSheet或者XLGrid),然后  
  循环数据集,再循环里写上Cell[XXX]   :=   XXXField.Value就可以了,循环结束后可以写上导出excel的代码  
   
  或者更省事直接用个cxGrid,直接一句话导出成excel。。。看你自己了Top

2 楼haohua(渴望成为高手的--菜鸟)回复于 2005-04-04 17:26:14 得分 0

不能用query  
   
  我是用DBGird显示的,用户可以多选记录,我再把用户选了的记录导出,  
   
  所以不知道怎么作,郁闷。。。。。。。。Top

3 楼phoebuswu(執子之手,與子偕老!)回复于 2005-04-04 17:44:41 得分 20

procedure   TIMCSFormTop.ExportToExcel(const   sExcelFileName:   string;  
      const   cxgvMain:   TcxGridDBTableView);  
  var  
      eclApp,WorkBook:   Variant;  
      nRowCount,   nColumnCount,   i,j,RowIND:   integer;  
  begin  
      try  
          eclApp   :=   CreateOleObject('Excel.Application');  
          WorkBook   :=   CreateOleObject('Excel.Sheet');  
          WorkBook   :=   eclApp.WorkBooks.add;  
   
          nColumnCount   :=   cxgvMain.ColumnCount;  
          for   i   :=   0   to   nColumnCount   -   1   do  
              eclApp.Cells(1,i   +   1)   :=   cxgvMain.Columns[i].Caption;  
   
          RowIND   :=   0;  
          with   cxgvMain.ViewData   do  
          begin  
              nRowCount   :=   RowCount;  
              for   i   :=   0   to   nRowCount   -   1   do  
              begin  
                  if   cxgvMain.ViewData.Rows[i].IsData   then  
                  begin  
                      for   j   :=   1   to   nColumnCount   do  
                          eclApp.Cells(RowIND   +   2,j)   :=Rows[i].DisplayTexts[j   -   1];  
                      RowIND   :=   RowIND   +   1   ;  
                  end;  
              end;  
          end;  
          WorkBook.Saveas(sExcelFileName);  
          WorkBook.close;  
          Showmessage('Save   Success!');  
      except  
          ShowMessage('Save   to   Excel   Failed!');  
      end;  
   
  以上程序是將cxgrid的内容輸出到excel中,你將那些Rows[i].DisplayTexts[j   -   1]改爲dbgrid的相關設定就差不多了,自己再測試一下  
  Top

4 楼xiaonanw(小南)回复于 2005-04-04 20:20:27 得分 0

excelworksheet1.Cells.Item[zongshu,1].FormulaR1C1   :=xuhao;  
                                        excelworksheet1.Cells.Item[zongshu,2].FormulaR1C1   :=dbgrid1.Columns.Items[0].Field.asvariant;  
                                        excelworksheet1.Cells.Item[zongshu,3].FormulaR1C1   :=dbgrid1.Columns.Items[1].Field.asvariant;  
                                        excelworksheet1.Cells.Item[zongshu,4].FormulaR1C1   :='动态';           //计量方式  
                                        excelworksheet1.Cells.Item[zongshu,5].FormulaR1C1   :='流量计';  
                                        excelworksheet1.Cells.Item[zongshu,6].FormulaR1C1   :=dbgrid1.Columns.Items[2].Field.asvariant;  
                                        excelworksheet1.Cells.Item[zongshu,7].FormulaR1C1   :=dbgrid1.Columns.Items[3].Field.asvariant;  
                                        excelworksheet1.Cells.Item[zongshu,8].FormulaR1C1   :=dbgrid1.Columns.Items[4].Field.asvariant;  
                                        excelworksheet1.Cells.Item[zongshu,9].FormulaR1C1   :=dbgrid1.Columns.Items[5].Field.asvariant;  
                                        excelworksheet1.Cells.Item[zongshu,10].FormulaR1C1   :=dbgrid1.Columns.Items[6].Field.asvariant;  
                                        excelworksheet1.Cells.Item[zongshu,11].FormulaR1C1   :=dbgrid1.Columns.Items[7].Field.asvariant;  
                                        excelworksheet1.Cells.Item[zongshu,12].FormulaR1C1   :=dbgrid1.Columns.Items[8].Field.asvariant;  
   
   
  这是我以前写的,你可以参考,Top

5 楼haohua(渴望成为高手的--菜鸟)回复于 2005-04-05 13:57:35 得分 0

各们高手能不能在代码后加上注释。  
   
  有的不懂呀。。。  
   
  谢谢了。。。。。。。。。Top

6 楼xiaonanw(小南)回复于 2005-04-10 10:39:57 得分 70

excelworksheet1.Cells.Item[1,1].FormulaR1C1   :=xuhao;     //单元格[1,1]的值为xuhao  
  excelworksheet1.Cells.Item[1,2].FormulaR1C1   :=dbgrid1.Columns.Items[0].Field.asvariant;  
                                                            //单元格[1,2]的值为dbgrid当前记录的第一列值  
  excelworksheet1.Cells.Item[1,3].FormulaR1C1   :=dbgrid1.Columns.Items[1].Field.asvariant;  
  excelworksheet1.Cells.Item[1,4].FormulaR1C1   :='动态';           //计量方式excelworksheet1.Cells.Item[1,5].FormulaR1C1   :='流量计';  
  excelworksheet1.Cells.Item[1,6].FormulaR1C1   :=dbgrid1.Columns.Items[2].Field.asvariant;  
  excelworksheet1.Cells.Item[1,7].FormulaR1C1   :=dbgrid1.Columns.Items[3].Field.asvariant;  
  excelworksheet1.Cells.Item[1,8].FormulaR1C1   :=dbgrid1.Columns.Items[4].Field.asvariant;  
  excelworksheet1.Cells.Item[1,9].FormulaR1C1   :=dbgrid1.Columns.Items[5].Field.asvariant;  
  excelworksheet1.Cells.Item[1,10].FormulaR1C1   :=dbgrid1.Columns.Items[6].Field.asvariant;  
  excelworksheet1.Cells.Item[1,11].FormulaR1C1   :=dbgrid1.Columns.Items[7].Field.asvariant;  
  excelworksheet1.Cells.Item[1,12].FormulaR1C1   :=dbgrid1.Columns.Items[8].Field.asvariant;  
   
   
  前两句给你注释了,剩下的基本一样,你应该能看懂了吧Top

7 楼xiaonanw(小南)回复于 2005-04-10 10:42:25 得分 0

写完一条记录,让dbgrid走到下一条记录,再循环“写excel”语句,就可以把多条都写到excel里了  
  Top

8 楼haohua(渴望成为高手的--菜鸟)回复于 2005-04-13 14:55:17 得分 0

xiaonanw(小南)  
   
  非常感谢。。。。。。  
   
  我慢慢看一下。Top

相关问题

  • 关于数据导入Excel表的记录居中的问题!
  • 请问如何将记录集(结果集)导入到Excel
  • 在delphi中吧SQL的表的记录导入到excel中
  • excel导入数据库时如何判断导入的excel里有多少记录?这循环要怎么写?
  • 高手请出招:记录集数据导入Excel表如何做?
  • 请问如何把记录从SQLSERVER的表中导入到EXCEL中。
  • 急! 如何把word文档导入到excel里对应的记录中
  • 请问兄弟们,将记录导入excel时如何让其自动生成饼图,导入的记录行数不确定?
  • 关于记录的导入
  • 请问如何将excel的记录循环导入到sql避免重复呢?急!!!!!!!!!!!!!!!

关键词

  • excel
  • formular1c
  • asvariant
  • excelworksheet
  • zongshu
  • dbgrid
  • cxgvmain
  • eclapp
  • rowind
  • cells

得分解答快速导航

  • 帖主:haohua
  • yesania
  • phoebuswu
  • xiaonanw

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo