//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "TOffice.h"
//---------------------------------------------------------------------------
__fastcall TOffice::TOffice()
{
dlgFileSave = new TSaveDialog(NULL);
// dlgFileSave->Filter="Excel(*.xls)|*.xls|Word(*.doc)|*.doc|Text(*.txt)|*.txt|All File(*.*)|*.*";
dlgFileSave->Filter="Excel(*.xls)|*.xls|Word(*.doc)|*.doc";
dlgFileSave->DefaultExt=".xls";
dlgFontTitle = new TFontDialog(NULL);
dlgFontTitle->Font->Name = "宋体";
dlgFontTitle->Font->Size = 12; //小四
dlgFontTitle->Font->Color = clWindowText;
dlgFontText = new TFontDialog(NULL);
dlgFontText->Font->Name = "宋体";
dlgFontText->Font->Size = 10; //五号
dlgFontText->Font->Color = clGreen;
bIsVisible = false; //生成文件时是否显示office程序
FpbExport = NULL;
}
//---------------------------------------------------------------------------
__fastcall TOffice::TOffice(TProgressBar *pbExport)
{
dlgFileSave = new TSaveDialog(NULL);
// dlgFileSave->Filter="Excel(*.xls)|*.xls|Word(*.doc)|*.doc|Text(*.txt)|*.txt|All File(*.*)|*.*";
dlgFileSave->Filter="Excel(*.xls)|*.xls|Word(*.doc)|*.doc";
dlgFileSave->DefaultExt=".xls";
dlgFontTitle = new TFontDialog(NULL);
dlgFontTitle->Font->Name = "宋体";
dlgFontTitle->Font->Size = 12; //小四
dlgFontTitle->Font->Color = clWindowText;
dlgFontText = new TFontDialog(NULL);
dlgFontText->Font->Name = "宋体";
dlgFontText->Font->Size = 10; //五号
dlgFontText->Font->Color = clGreen;
bIsVisible = false; //生成文件时是否显示office程序
FpbExport = pbExport;
}
//---------------------------------------------------------------------------
__fastcall TOffice::~TOffice()
{
delete dlgFileSave;
delete dlgFontTitle;
delete dlgFontText;
}
//---------------------------------------------------------------------------
void __fastcall TOffice::SetFontTitle()
{
dlgFontTitle->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TOffice::SetFontText()
{
dlgFontText->Execute();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TOffice::SetExportFile()
{
if(dlgFileSave->Execute())
{
return dlgFileSave->FileName;
}
return "";
}
//---------------------------------------------------------------------------
//保存 DataSource 中的数据
//---------------------------------------------------------------------------
bool __fastcall TOffice::Save(AnsiString asFileName,TDataSource *dsData,bool IsPrompt)
{
bool bResult = true;
AnsiString asFileExt;
if( IsPrompt )
{
dlgFileSave->FileName=asFileName;
if( dlgFileSave->Execute() == false )
{
return false;
}
asFileName = dlgFileSave->FileName;
}
asFileExt = ExtractFileExt(asFileName);
Screen->Cursor=crHourGlass;
try
{
if( asFileExt == ".xls" )
{
bResult = SaveToExcel(asFileName,dsData);
}
else if( asFileExt == ".doc" )
{
bResult = SaveToWord(asFileName,"",dsData);
}
else //Text && others
{
Application->MessageBox("不支持该文件类型!","错误",MB_OK);
}
}
__finally
{
Screen->Cursor=crDefault;
return bResult;
}
}
//---------------------------------------------------------------------------
//保存 StringGrid 中的数据
//---------------------------------------------------------------------------
bool __fastcall TOffice::Save(AnsiString asFileName,TStringGrid *sgGrid,bool IsPrompt)
{
bool bResult = true;
AnsiString asFileExt;
if( IsPrompt )
{
dlgFileSave->FileName=asFileName;
if( dlgFileSave->Execute() == false )
{
return false;
}
asFileName = dlgFileSave->FileName;
}
asFileExt = ExtractFileExt(asFileName);
Screen->Cursor=crHourGlass;
try
{
if( asFileExt == ".xls" )
{
bResult = SaveToExcel(asFileName,sgGrid);
}
else if( asFileExt == ".doc" )
{
bResult = SaveToWord(asFileName,"",sgGrid);
}
else //Text && others
{
Application->MessageBox("不支持该文件类型!","错误",MB_OK);
}
}
__finally
{
Screen->Cursor=crDefault;
return bResult;
}
}
//---------------------------------------------------------------------------
//保存 DBGrid 中的数据
//---------------------------------------------------------------------------
bool __fastcall TOffice::Save(AnsiString asFileName,TDBGrid *dgGrid,bool IsPrompt)
{
bool bResult = true;
AnsiString asFileExt;
if( IsPrompt )
{
dlgFileSave->FileName=asFileName;
if( dlgFileSave->Execute() == false )
{
return false;
}
asFileName = dlgFileSave->FileName;
}
asFileExt = ExtractFileExt(asFileName);
Screen->Cursor=crHourGlass;
try
{
if( asFileExt == ".xls" )
{
bResult = SaveToExcel(asFileName,dgGrid);
}
else if( asFileExt == ".doc" )
{
bResult = SaveToWord(asFileName,"",dgGrid);
}
else //Text && others
{
Application->MessageBox("不支持该文件类型!","错误",MB_OK);
}
}
__finally
{
Screen->Cursor=crDefault;
return bResult;
}
}
//---------------------------------------------------------------------------
//按照模板保存 DataSource 中的数据
//---------------------------------------------------------------------------
bool __fastcall TOffice::TemplateSave(AnsiString asFileName,AnsiString asTemplateName,TDataSource *dsData,bool IsPrompt)
{
bool bResult = true;
AnsiString asFileExt;
if( IsPrompt )
{
dlgFileSave->FileName=asFileName;
if( dlgFileSave->Execute() == false )
{
return false;
}
asFileName = dlgFileSave->FileName;
}
asFileExt = ExtractFileExt(asFileName);
Screen->Cursor=crHourGlass;
try
{
if( asFileExt == ".xls" )
{
Application->MessageBox("该文件类型不支持此操作!","错误",MB_OK);
}
else if( asFileExt == ".doc" )
{
bResult = SaveToWord(asFileName,asTemplateName,dsData);
}
else //Text && others
{
Application->MessageBox("该文件类型不支持此操作!","错误",MB_OK);
}
}
__finally
{
Screen->Cursor=crDefault;
return bResult;
}
}
void __fastcall TOffice::SetFont(Variant varRange,TFont *font)
{
varRange.OlePropertyGet("Font").Exec(PropertySet("Name")<< font->Name); //设置字体名字
varRange.OlePropertyGet("Font").Exec(PropertySet("Size")<< font->Size); //设置字体大小
varRange.OlePropertyGet("Font").Exec(PropertySet("Color")<< font->Color); //设置字体颜色
if( font->Style.Contains(fsBold) ) //设置字体风格
varRange.OlePropertyGet("Font").Exec(PropertySet("Bold")<< true);
else
varRange.OlePropertyGet("Font").Exec(PropertySet("Bold")<< false);
if( font->Style.Contains(fsItalic) ) //设置字体风格
varRange.OlePropertyGet("Font").Exec(PropertySet("Italic")<< true);
else
varRange.OlePropertyGet("Fo
BCB使用OLE保存Excel/Word文档类
5星 · 超过95%的资源 需积分: 9 37 浏览量
2009-05-23
23:27:37
上传
评论 2
收藏 4KB RAR 举报
天为峰
- 粉丝: 6
- 资源: 12
- 1
- 2
前往页