数据库数据与excel的互导

Rain 2005-02-01 06:05:47
我是用ADO与Access连接的数据库,我想当我在打开一个表或查询的时候,通过按个Button打开Execl并将所看到的表或查询的内容复制到Excel中,当然也能在打开一个表的时候(没有查询)能将Excel中的内容(各个字段与数据库中的对应)导入到所见的表中。
...全文
322 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ferrywong 2005-04-30
  • 打赏
  • 举报
回复
我的是OFFICE2003的,
ferrywong 2005-04-29
  • 打赏
  • 举报
回复
我在把数据库的数据导出到EXCEL的时候编译过了,可是运行的时候提示说内存出错,换一个别的类似的函数也是如此,请问有没有别的朋友出现过类似的情况,都是怎么解决的?
icwin 2005-04-29
  • 打赏
  • 举报
回复
redlei(redlei) ( ) 信誉:100
,程序是可行的,你的excel的版本,2000?
zjx1302 2005-04-01
  • 打赏
  • 举报
回复
收藏
icwin 2005-03-31
  • 打赏
  • 举报
回复
up
redlei 2005-02-12
  • 打赏
  • 举报
回复
转发一下
DBGrid数据导出到Excel表格
注意:要在头文件中加上 #include <Comobj.hpp>
//DBGrid数据导出到Excel表格
void __stdcall GridToExcel(TDBGrid *DBGridB,AnsiString titleB,AnsiString fileNameB)
{ //要导出数据的DBGrid/导出到Excel中的标题/保存Excel的路径
//判断文件是否存在,并决定是否删除
if (FileExists(fileNameB))
{
if (MessageDlg("文件已经存在,是否删除?",
mtWarning,TMsgDlgButtons()<<mbOK<<mbCancel,0)==mrOk)
{
DeleteFile(fileNameB);
}
else
{
ShowMessage("放弃操作");
return;
}
}
//导出到Excel开始
Variant excelApp,workBook,aft,sheetA,range,bef;
//检查机器是否安装了Office
try{
//打开excel应用程序
excelApp = CreateOleObject("Excel.Application");
}
catch(...)
{
ShowMessage("运行Excel出错,请检查本机是否安装了Office!");
return;
}
excelApp.OPS("Visible",true); //使应用程序可见
//建立一个新的excel文件
workBook = excelApp.OPG("WorkBooks").OFN("Add");
workBook = excelApp.OPG("ActiveWorkBook");//打开工作簿
//显示存在的sheet的数目
int count = workBook.OPG("sheets").OPG("count");
aft = workBook.OPG("sheets",count);
//增加一个sheet
workBook.OPG("sheets").OPR("Add",bef.NoParam(),aft);
//当前sheet赋值给sheetA
sheetA = workBook.OPG("ActiveSheet");
//将sheet改名为表一
sheetA.OPS("name","表一");
//设置表一为横向页面打印,横向用"xlLandscape",纵向用"xlPortrait"
sheetA.OPG("PageSetup").OPS("Orientation",2);
// 在Excel中设置的相应边距值,在BCB中写入时乘以28.5
sheetA.OPG("PageSetup").OPS("LeftMargin", 1*28.5); // 左边距1
sheetA.OPG("PageSetup").OPS("RightMargin", 1 * 28.5); // 右边距1
sheetA.OPG("PageSetup").OPS("TopMargin", 2 * 28.5); // 上边距2
sheetA.OPG("PageSetup").OPS("BottomMargin", 2 * 28.5); // 下边距2
//设置打印时水平居中对齐
sheetA.OPG("PageSetup").OPS("CenterHorizontally",true);
//表一的标题***************
//合并单元格A1到M1,并将A1:M1区域赋值给range
range = sheetA.OPG("Range","A1:M1");
range.OFN("Merge",false);//合并用false,拆分用true
//向单元格中填写内容
sheetA.OPG("Cells",1,1).OPS("Value",titleB.c_str());
//设置区域字体
range.OPG("Cells").OPG("Font").OPS("Name","宋体");
//设置区域字号大小
range.OPG("Cells").OPG("Font").OPS("Size",18);
//设置垂直对齐方式-居中
range.OPG("Cells").OPS("VerticalAlignment",2);
//设置水平对齐方式-居中
range.OPG("Cells").OPS("HorizontalAlignment",3);
//表一的标题结束*************
//表一的表头****************
for(int i=0;i<DBGridB->DataSource->DataSet->Fields->Count;i++)
{
String str = DBGridB->DataSource->DataSet->Fields->Fields[i]->DisplayLabel;
//向单元格填写内容
sheetA.OPG("Cells",2,i+1).OPS("Value",str.c_str());
//设置边框
sheetA.OPG("Cells",2,i+1).OPG("Borders",1).OPS("LineStyle",1);//左边框
sheetA.OPG("Cells",2,i+1).OPG("Borders",2).OPS("LineStyle",1);//右边框
sheetA.OPG("Cells",2,i+1).OPG("Borders",3).OPS("LineStyle",1);//上边框
sheetA.OPG("Cells",2,i+1).OPG("Borders",4).OPS("LineStyle",1);//下边框
sheetA.OPG("Cells",2,i+1).OPS("WrapText",true);//设置自动换行
sheetA.OPG("Cells",2,i+1).OPS("HorizontalAlignment",3);//设置水平居中
}
//表一的表头结束************
//表一的数据开始************
DBGridB->DataSource->DataSet->First();
for(int j=1;j<DBGridB->DataSource->DataSet->RecordCount+1;j++)
{
for(int i=0;i<DBGridB->DataSource->DataSet->Fields->Count-1;i++)
{
String strA = DBGridB->DataSource->DataSet->Fields->Fields[i]->Text;
sheetA.OPG("Cells",j+4,i+1).OPS("Value",strA.c_str());
sheetA.OPG("Cells",j+4,i+1).OPG("Borders",1).OPS("LineStyle",1);//左边框
sheetA.OPG("Cells",j+4,i+1).OPG("Borders",2).OPS("LineStyle",1);//右边框
sheetA.OPG("Cells",j+4,i+1).OPG("Borders",3).OPS("LineStyle",1);//上边框
sheetA.OPG("Cells",j+4,i+1).OPG("Borders",4).OPS("LineStyle",1);//下边框
}
if (!DBGridB->DataSource->DataSet->Eof)
{
DBGridB->DataSource->DataSet->Next();
}
}
//表一的数据结束***********
//关闭警告提示
workBook.OPG("Application").OPS("DisplayAlerts",false);
//另存为
workBook.OPR("SaveAs",fileNameB.c_str());
//关闭工作簿
workBook.OPR("Close");
//关闭excel程序
excelApp.OFN("Quit");
//结束,如果没有如下代码,Excel线程直到应用程序退出才结束
excelApp=Unassigned;
workBook=Unassigned;
aft=Unassigned;
sheetA = Unassigned;
range = Unassigned;
ShowMessage(titleB+"导出成功!");
}
xxgclj 2005-02-11
  • 打赏
  • 举报
回复
TBatchMove
TR@SOE 2005-02-03
  • 打赏
  • 举报
回复
http://borland.mblogger.cn/tr
特招 2005-02-02
  • 打赏
  • 举报
回复
http;//blog.csdn.net/dgyanyong
TR@SOE 2005-02-02
  • 打赏
  • 举报
回复
搜索一下,不是很难的问题。
Rain 2005-02-02
  • 打赏
  • 举报
回复
楼上的地址我以前就去看了的,但在我这好像有点问题,还在研究中

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧