c++builer如何将数据库内容导出到EXCEL 在线等 (100分)

L

lhy2008

Unregistered / Unconfirmed
GUEST, unregistred user!
c++builer如何将数据库内容导出到EXCEL

 
as 可以试试强制转换
 
留下箱子,我发给你
 
bhzy2008@163.com
 
to wghmy
赶快发呀,救命呀!!!!!!!!!!!!!!!!
 
Send 不成功 !
详细信息为 : Can not send message !
发送到以下地址时发生永久性的错误,可能是输入了不存在的邮件地址所致,请确认地址无误:
 
li_hai_yang@sohu.com

 
用控件吧,我有一个delphi的控件和例子
 
我跟你贴出来吧.
我的邮件出问题了,不好意思(.cpp, .h, .dfm)
//---------------------------------------------------------------------------

#include <vcl.h>
#include <vector.h>
#include <utilcls.h>
#pragma hdrstop

#include "fmOutexcelPath.h"
#include "dmAc.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmOutexcelpath *frmOutexcelpath;
//---------------------------------------------------------------------------
__fastcall TfrmOutexcelpath::TfrmOutexcelpath(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TfrmOutexcelpath::TfrmOutexcelpath(TComponent* Owner,String ps_Title1,String ps_Title2,vector <String> pvs_Item,TClientDataSet *pd_Dataset,bool pb_Showdbtitle)
: TForm(Owner)
{
gs_Title1=ps_Title1;
gs_Title2=ps_Title2;
gvs_Item=pvs_Item;
gd_Dataset=pd_Dataset;
gb_Showdbtitle=pb_Showdbtitle;
}
//---------------------------------------------------------------------------
void __fastcall TfrmOutexcelpath::F_Outexcel()
{
Variant v_Allbooks;
Variant v_Excel,v_Workbook,v_Sheet,v_Range;
Variant v_Value,v_Width;
//v_Smalltitle;
Variant v_Borders,v_Toptile,v_Background;
int i_Length=0;
String s_Fieldvalue;
char c_Col='A';
int i_Row=3;
int i_Tilecol=(gd_Dataset->FieldCount-gd_Dataset->FieldCount%2)/2;
int i_Spacing;//间隔
TFieldType Fldtyp=ftCurrency;

PropertyGet Range("Range");
PropertySet Setvalue("Value");
PropertyGet Characters("Characters");

v_Excel=Variant::CreateObject("excel.application");
if(cbxOpenflg->State==cbChecked)
{
v_Excel.OlePropertySet("visible",true);
}
else
{
v_Excel.OlePropertySet("visible",false);
}
v_Allbooks=v_Excel.OlePropertyGet("workbooks");
v_Allbooks.OleFunction("Add");
v_Workbook=v_Excel.OlePropertyGet("ActiveWorkBook");
v_Sheet=v_Workbook.OlePropertyGet("ActiveSheet");

//输出标题
Range.ClearArgs();
Setvalue.ClearArgs();
c_Col='A'+i_Tilecol;
v_Range=v_Sheet.Exec(Range << String(c_Col)+"1");
v_Range.Exec(Setvalue<<gs_Title1);
//v_Smalltitle=v_Range.Exec(Characters << String(gs_Title1.Length()+1)+","+String(gs_Title2.Length()));
//v_Range.OlePropertySet("FormulaR1C1",gs_Title1+gs_Title2);
//v_Range.OlePropertySet("HorizontalAlignment","xlCenter");
v_Range=v_Range.OlePropertyGet("Font");
v_Range.OlePropertySet("Name","宋体");
v_Range.OlePropertySet("FontStyle","加粗");
v_Range.OlePropertySet("Size",16);
v_Range.OlePropertySet("ColorIndex","1");
//v_Range.OlePropertySet("HorizontalAlignment","xlCenter");

/*
v_Smalltitle=v_Smalltitle.OlePropertyGet("Font");
v_Smalltitle.OlePropertySet("Name","宋体");
v_Smalltitle.OlePropertySet("FontStyle","加粗");
v_Smalltitle.OlePropertySet("Size",9);
v_Smalltitle.OlePropertySet("ColorIndex","1");
*/

//输出附加信息
c_Col='A';
i_Spacing=(gd_Dataset->FieldCount-gd_Dataset->FieldCount%gvs_Item.size())/gvs_Item.size();
if(gvs_Item.size()<=2)
{
for(unsigned int i=0;i<gvs_Item.size();i++)
{
Range.ClearArgs();
Setvalue.ClearArgs();
v_Range=v_Sheet.Exec(Range << String(c_Col)+"2");
v_Width=v_Range.OlePropertyGet("ColumnWidth");
if(gvs_Item.Length()>v_Width.iVal)
{
v_Range.OlePropertySet("ColumnWidth",gvs_Item.Length());
}
v_Range.Exec(Setvalue << gvs_Item);
v_Range=v_Range.OlePropertyGet("Font");
v_Range.OlePropertySet("Name","宋体");
v_Range.OlePropertySet("FontStyle","常规");
v_Range.OlePropertySet("Size",10);
v_Range.OlePropertySet("ColorIndex","1");
c_Col+=1;
}
}
else
{
for(unsigned int i=0;i<gvs_Item.size();i++)
{
Range.ClearArgs();
Setvalue.ClearArgs();
v_Range=v_Sheet.Exec(Range << String(c_Col)+"2");
v_Width=v_Range.OlePropertyGet("ColumnWidth");
if(gvs_Item.Length()>v_Width.iVal)
{
v_Range.OlePropertySet("ColumnWidth",gvs_Item.Length()-2);
}
v_Range.Exec(Setvalue << gvs_Item);
v_Range=v_Range.OlePropertyGet("Font");
v_Range.OlePropertySet("Name","宋体");
v_Range.OlePropertySet("FontStyle","常规");
v_Range.OlePropertySet("Size",10);
v_Range.OlePropertySet("ColorIndex","1");
c_Col+=i_Spacing;
}
}
/*
v_Range=v_Sheet.Exec(Range << String(c_Col)+"2");
v_Range.Exec(Setvalue<<gs_Acprd);
v_Range=v_Range.OlePropertyGet("Font");
v_Range.OlePropertySet("Name"," 宋体");
v_Range.OlePropertySet("Size",13);
v_Range.OlePropertySet("ColorIndex","5");
Range.ClearArgs();
Setvalue.ClearArgs();
c_Col='A'+dmdAc->cdsspBrAcRpVal->FieldCount-1;
v_Range=v_Sheet.Exec(Range<<String(c_Col)+"2");
// v_Range.OlePropertySet("HorizontalAlignment","xlCenter");
v_Range.Exec(Setvalue<<"单位:元");
v_Range=v_Range.OlePropertyGet("Font");
v_Range.OlePropertySet("Name"," 宋体");
v_Range.OlePropertySet("Size",13);
v_Range.OlePropertySet("ColorIndex","5");
*/

//输出数据字段标题
if(gb_Showdbtitle)
{
c_Col='A';
i_Row=3;
for(int i=0;i<gd_Dataset->FieldCount;i++)
{
Range.ClearArgs();
Setvalue.ClearArgs();
v_Range=v_Sheet.Exec(Range << String(c_Col)+String(i_Row));
v_Range.Exec(Setvalue<<gd_Dataset->Fields->Fields->DisplayLabel);
v_Width=v_Range.OlePropertyGet("ColumnWidth");
if(gd_Dataset->Fields->Fields->FieldName.Length()>v_Width.operator int())
{
v_Range.OlePropertySet("ColumnWidth",gd_Dataset->Fields->Fields->FieldName.Length()-2);
}
else
{
if(v_Width.operator int()-gd_Dataset->Fields->Fields->FieldName.Length()>25)
{
v_Range.OlePropertySet("ColumnWidth",gd_Dataset->Fields->Fields->FieldName.Length()-2);
}
}
//v_Range.OlePropertySet("HorizontalAlignment","xlCenter");
v_Range=v_Range.OlePropertyGet("Font");
v_Range.OlePropertySet("Name","宋体");
v_Range.OlePropertySet("Size",10);
v_Range.OlePropertySet("ColorIndex","1");
c_Col++;
}
}

//输出数据
c_Col='A';
gd_Dataset->Open();
for(int i=0;i<gd_Dataset->FieldCount;i++)
{
if(gb_Showdbtitle)//是否有字段标题
i_Row=4;
else
i_Row=4;
i_Length=0;
gd_Dataset->First();
while(!gd_Dataset->Eof)
{
Range.ClearArgs();
Setvalue.ClearArgs();
v_Range=v_Sheet.Exec(Range << String(c_Col)+String(i_Row));
s_Fieldvalue=gd_Dataset->Fields->Fields->AsString;
//if(i_Length<s_Fieldvalue.Length())
//{
//i_Length=s_Fieldvalue.Length();
//v_Range.OlePropertySet("ColumnWidth",i_Length);
//}
v_Width=v_Range.OlePropertyGet("ColumnWidth");
if(s_Fieldvalue.Length()>v_Width.operator int())
{
v_Range.OlePropertySet("ColumnWidth",s_Fieldvalue.Length());
}
else
{
if(v_Width.operator int()-s_Fieldvalue.Length()>15)
{
v_Range.OlePropertySet("ColumnWidth",gd_Dataset->Fields->Fields->FieldName.Length());
}
}
if(gd_Dataset->Fields->Fields->DataType==8)
{
v_Range.OlePropertySet("NumberFormatLocal","¥#,##0.00;¥-#,##0.00");
}
v_Range.Exec(Setvalue<<s_Fieldvalue);
v_Range=v_Range.OlePropertyGet("Font");
v_Range.OlePropertySet("Name","宋体");
v_Range.OlePropertySet("Size",9);
v_Range.OlePropertySet("ColorIndex","1");
i_Row++;
gd_Dataset->Next();
}
c_Col++;
}

//设置框线
Range.ClearArgs();
c_Col='A'+gd_Dataset->FieldCount-1;
//String s_End="A3:"+String(('A'+)+gd_Dataset->RecordCount+2);
//ShowMessage(s_End);
v_Range=v_Sheet.Exec(Range<<"A3:"+String(c_Col)+String(gd_Dataset->RecordCount+3));
v_Borders=v_Range.OlePropertyGet("Borders");
v_Borders.OlePropertySet("ColorIndex","1");
//v_Borders.OlePropertySet("Weight","xlThin");
//v_Borders.OlePropertySet("ColorIndex","1");


//设置顶端标题行
v_Toptile=v_Sheet.OlePropertyGet("PageSetup");
v_Toptile.OlePropertySet("PrintTitleRows","$1:$3");
v_Toptile.OlePropertySet("PrintTitleColumns","");
v_Toptile.OlePropertySet("CenterFooter","第 &P 页,共 &N 页");

//设置字段标题图案
if(gb_Showdbtitle)
{
Range.ClearArgs();
v_Range=v_Sheet.Exec(Range << "A3:"+String(c_Col)+"3");
v_Background=v_Range.OlePropertyGet("Interior");
v_Background.OlePropertySet("ColorIndex","48");
//v_Background.OlePropertySet("Pattern","xlSolid");
//v_Background.OlePropertySet("PatternColorIndex","xlAutomatic");
}

v_Workbook.OleProcedure("SaveAs",Trim(edtPath->Text));
}
//--------------------------------------------------------------------------------
void __fastcall TfrmOutexcelpath::cboFormatChange(TObject *Sender)
{
switch (cboFormat->ItemIndex)
{
case 0:edtPath->Text=edtPath->Text+".xls" ;
break;
case 1:edtPath->Text=edtPath->Text+".htm" ;
break;
case 2: edtPath->Text=edtPath->Text+".txt" ;
break;
}
}
//---------------------------------------------------------------------------

void __fastcall TfrmOutexcelpath::FormCreate(TObject *Sender)
{
lblOutnm->Caption=gs_Title1;
cboFormat->ItemIndex=0;
edtPath->Text=ExtractFilePath(ParamStr(0))+gs_Title1+gs_Title2;
cboFormatChange(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TfrmOutexcelpath::BitBtn1Click(TObject *Sender)
{
if(cboFormat->ItemIndex==0)
{
F_Outexcel();
//ShowMessage(gvs_Item);
}
}
//---------------------------------------------------------------------------





//---------------------------------------------------------------------------

#ifndef fmOutexcelPathH
#define fmOutexcelPathH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TfrmOutexcelpath : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TLabel *Label1;
TLabel *lblOutnm;
TLabel *Label3;
TCheckBox *cbxOpenflg;
TEdit *edtPath;
TBitBtn *BitBtn1;
TBitBtn *BitBtn2;
TComboBox *cboFormat;
TLabel *Label2;
void __fastcall cboFormatChange(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall BitBtn1Click(TObject *Sender);
private: // User declarations
String gs_Title1; //标题
String gs_Title2;
String gs_Acunm;
String gs_Acprd;
vector <String> gvs_Item;//附加信息
TClientDataSet *gd_Dataset;//数据集
bool gb_Showdbtitle;//是否显示数据字段标题
public: // User declarations
__fastcall TfrmOutexcelpath(TComponent* Owner);
//__fastcall TfrmOutexcelpath(TComponent* Owner,String ps_Lblcaption,String ps_Acunm,String ps_Acprd);
__fastcall TfrmOutexcelpath(TComponent* Owner,String ps_Title1,String ps_Title2,vector <String> pvs_Item,TClientDataSet *pd_Dataset,bool pb_Showdbtitle);
void __fastcall F_Outexcel();
};
//---------------------------------------------------------------------------
extern PACKAGE TfrmOutexcelpath *frmOutexcelpath;
//---------------------------------------------------------------------------
#endif




object frmOutexcelpath: TfrmOutexcelpath
Left = 271
Top = 182
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = '设置输出路径'
ClientHeight = 156
ClientWidth = 330
Color = clBtnFace
Font.Charset = GB2312_CHARSET
Font.Color = clWindowText
Font.Height = -12
Font.Name = '宋体'
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 12
object Panel1: TPanel
Left = 14
Top = 7
Width = 305
Height = 137
BevelInner = bvSpace
BevelOuter = bvLowered
TabOrder = 0
object Label1: TLabel
Left = 16
Top = 17
Width = 36
Height = 12
Caption = '输出:'
end
object lblOutnm: TLabel
Left = 72
Top = 17
Width = 48
Height = 12
Caption = 'lblOutnm'
end
object Label3: TLabel
Left = 16
Top = 61
Width = 60
Height = 12
Caption = '保存路径:'
end
object Label2: TLabel
Left = 135
Top = 17
Width = 12
Height = 12
Caption = '为'
end
object cbxOpenflg: TCheckBox
Left = 16
Top = 101
Width = 73
Height = 17
Caption = '预览'
Checked = True
State = cbChecked
TabOrder = 0
end
object edtPath: TEdit
Left = 74
Top = 57
Width = 215
Height = 20
TabOrder = 1
end
object BitBtn1: TBitBtn
Left = 156
Top = 96
Width = 63
Height = 25
Caption = '确定'
TabOrder = 2
OnClick = BitBtn1Click
Kind = bkYes
Spacing = 2
end
object BitBtn2: TBitBtn
Left = 231
Top = 96
Width = 63
Height = 25
Caption = '取消'
TabOrder = 3
Kind = bkCancel
Spacing = 2
end
object cboFormat: TComboBox
Left = 158
Top = 10
Width = 131
Height = 20
ItemHeight = 12
TabOrder = 4
OnChange = cboFormatChange
Items.Strings = (
'EXCEL格式'
'HTML格式'
'文本格式')
end
end
end

 
use ehlib控件
 
多人接受答案了。
 
顶部