如何用bcb读取excel表格中任一行、列的数据?

azuly 2003-08-22 09:08:36
如题,谢谢!
...全文
465 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BSC 2003-08-23
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------
//合并单元格
Variant __fastcall TXclWorksheet::MergeCells(int iColMin, int iRowMin, int iColMax, int iRowMax)
{
Variant vRange = GetRange(iColMin, iRowMin, iColMax, iRowMax);
vRange.OlePropertySet("MergeCells", Variant(true));
return vRange;
}
//---------------------------------------------------------------------------
//获得工作页范围
Variant __fastcall TXclWorksheet::GetRange(int iColMin, int iRowMin, int iColMax, int iRowMax)
{
PropertyGet pgRange("Range");
return m_pWorkSheet->Exec(pgRange << String(IndicesToExcel(iColMin, iRowMin)
+ ":" + IndicesToExcel(iColMax, iRowMax)));
}
//---------------------------------------------------------------------------
//得到单元格
Variant __fastcall TXclWorksheet::GetCell(int iCol, int iRow)
{
Variant vRtn = "";
if(m_pWorkSheet)
{
PropertyGet pgRange("Range");
vRtn = m_pWorkSheet->Exec(pgRange << IndicesToExcel(iCol, iRow));
}
return vRtn;
}
//---------------------------------------------------------------------------
//得到单元格的值
Variant __fastcall TXclWorksheet::GetCellValue(int iCol, int iRow)
{
Variant vRtn = "";
if(m_pWorkSheet)
{
PropertyGet pgRange("Range");
vRtn = m_pWorkSheet->Exec(pgRange << IndicesToExcel(iCol, iRow)).OlePropertyGet("Value");
}
return vRtn;
}
//---------------------------------------------------------------------------
//设置单元格的值
void __fastcall TXclWorksheet::SetCellValue(int iCol, int iRow, Variant vValue)
{
if(m_pWorkSheet)
{
PropertySet psValue("Value");

GetCell(iCol, iRow).Exec(psValue << vValue);
GetCell(iCol, iRow).OlePropertySet("HorizontalAlignment", 3);
GetCell(iCol, iRow).OlePropertySet("VerticalAlignment", 2);
GetCell(iCol, iRow).OlePropertyGet("Borders").OlePropertySet("ColorIndex",0);
}
}
//---------------------------------------------------------------------------
//将行和列转换成Excel对应的行列标示
AnsiString __fastcall TXclWorksheet::IndicesToExcel(int iCol, int iRow)
{
AnsiString strRtn = "";
int iMod = iCol % int('Z' - 64);
int iRest = iCol / int('Z' - 64);
strRtn += iRest ? String(char(iRest + 64)) : String("");
strRtn += String(char(iMod + 'A')) + IntToStr(iRow + 1);
return strRtn;
}
//---------------------------------------------------------------------------
//关闭Excel文件
void __fastcall TXclWorksheet::CloseExcel()
{
// 保存Excel文件
if (m_pWorkBook)
{
try
{
//HWND hPrevApp = ::FindWindow(NULL,"Microsoft Excel");
//if (hPrevApp)
//{
m_pWorkBook->OleProcedure("SaveAs");
// 关闭工作簿
m_pWorkBook->OleProcedure("Close");
// 退出Excel
m_pExcel->OleFunction("Quit");
//}
}
catch(...)
{
//MessageDlg("Excel程序退出异常", mtError, TMsgDlgButtons() << mbOK, NULL);
Abort;
}
}
}

//---------------------------------------------------------------------------
//保存工作薄
void __fastcall TXclWorksheet::SaveWorkbook(AnsiString Name)
{
if (m_pWorkBook)
{
AnsiString excelFile = Name;
m_pWorkBook->OleProcedure("Save",excelFile.c_str());
}
}
//---------------------------------------------------------------------------
//装载工作薄
void __fastcall TXclWorksheet::LoadWorkbook(AnsiString Name)
{
if (!m_pExcel)
{
OpenExcel();
}
if (!m_pWorkBook)
{
m_pWorkBook = new Variant;
}
if (!m_pWorkSheet)
{
m_pWorkSheet = new Variant;
}
//打开Excel文件
AnsiString excelFile = Name;//ExtractFilePath(Application->ExeName) + "文件名.xls";
m_pExcel->OlePropertyGet("WorkBooks").OleProcedure("Open", excelFile.c_str());
//获得当前工作簿的对象
*m_pWorkBook = m_pExcel->OlePropertyGet("ActiveWorkBook");
//选中第一个工作表作为当前的工作表
*m_pWorkSheet = m_pWorkBook->OlePropertyGet("Sheets", 1);
m_pWorkBook->OlePropertyGet("Sheets", 1).OleProcedure("Select");
if (!m_Suspended)
{
m_pExcel->OlePropertySet("Visible", Variant(true));
m_pWorkSheet->OlePropertySet("Visible", Variant(true));
}
else
{
m_pExcel->OlePropertySet("Visible", Variant(false));
//m_pWorkSheet->OlePropertySet("Visible", Variant(false));
}
}

//---------------------------------------------------------------------------
//组织数据源创建Excel报表
void __fastcall TXclWorksheet::CreateExcelReport(TDataSet* DSource,int iCol, int iRow,bool H)
{
int CurrCol, CurrRow;
CurrCol = iCol;
CurrRow = iRow;
Screen->Cursor=crHourGlass;
if (H)//行排列
{
for (int i=0;i<DSource->Fields->Count;i++)
{
if(DSource->Fields->Fields[i]->Visible)
{
SetCellValue(CurrCol,2,DSource->Fields->Fields[i]->DisplayLabel);
CurrCol++;
}
}
//标题头
//MergeCells(0,0,CurrCol,1);
//SetCellValue(0,0,m_Title1);

int j=0;
DSource->First();
while(!DSource->Eof)
{
CurrCol=0;
for (int i=0;i<DSource->Fields->Count;i++)
{
if(DSource->Fields->Fields[i]->Visible)
{
SetCellValue(CurrCol,j+3,DSource->Fields->Fields[i]->AsString);
CurrCol++;
}
}
Application->ProcessMessages();
DSource->Next();
j++;
}
}
else//竖排列
{
for (int i=0;i<DSource->Fields->Count;i++)
{
if(DSource->Fields->Fields[i]->Visible)
{
CurrRow++;
SetCellValue(1,CurrRow,DSource->Fields->Fields[i]->DisplayLabel);
}
}
int j=0;
DSource->First();
while(!DSource->Eof)
{
CurrRow=0;
for (int i=0;i<DSource->Fields->Count;i++)
{
if(DSource->Fields->Fields[i]->Visible)
{
CurrRow++;
SetCellValue(j+2,CurrRow,DSource->Fields->Fields[i]->AsString);
}
}
Application->ProcessMessages();
DSource->Next();
j++;
}
}
Screen->Cursor=crDefault;
}
BSC 2003-08-23
  • 打赏
  • 举报
回复
#pragma hdrstop

#include "ExcelWork.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall TXclWorksheet::TXclWorksheet(/*TMain* pMain, */bool bSuspended)
{
m_Suspended = bSuspended;
m_pExcel = NULL;
m_pWorkBook = NULL;
m_pWorkSheet = NULL;
}
__fastcall TXclWorksheet::~TXclWorksheet()
{
delete m_pWorkBook;
delete m_pWorkSheet;
delete m_pExcel;
m_pWorkBook = NULL;
m_pWorkSheet = NULL;
}
void __fastcall TXclWorksheet::OpenExcel()
{
Variant xcl_wbook, xcl_wsheet;
if(!m_pExcel)
{
m_pExcel = new Variant;

try
{
*m_pExcel = Variant::GetActiveObject("excel.application");
m_bAlreadyOpened = true;
}
catch(...)
{
try
{
*m_pExcel = Variant::CreateObject("excel.application");
m_bAlreadyOpened = false;
}
catch(...)
{
MessageDlg("请检查是否安装了Excel程序", mtError, TMsgDlgButtons() << mbOK, NULL);
}
}
}
}
//---------------------------------------------------------------------------
//创建工作薄
Variant* __fastcall TXclWorksheet::CreateWorkBook()
{
if(!m_pExcel)
OpenExcel();
if(m_pExcel)
{
if(!m_pWorkBook)
m_pWorkBook = new Variant;
Variant vAllWorkbooks;
try
{
vAllWorkbooks = m_pExcel->OlePropertyGet("Workbooks");
}
catch(...)
{
delete m_pExcel;
delete m_pWorkBook;

m_pExcel = NULL;
m_pWorkBook = NULL;

return CreateWorkBook();
}

*m_pWorkBook = vAllWorkbooks.OleFunction("Add");
m_bWorsheetFirstTime = true;
}
return m_pWorkBook;
}
//---------------------------------------------------------------------------
//创建工作薄上的页
Variant* __fastcall TXclWorksheet::CreateWorkSheet(AnsiString Name)
{
if(!m_pWorkBook)
CreateWorkBook();
if(m_pWorkBook)
{
m_bSheetExists = m_pWorkSheet;
if(!m_pWorkSheet)
m_pWorkSheet = new Variant;
try
{
bool b_found = false;
Variant v_count = m_pWorkBook->OlePropertyGet("WorkSheets").OlePropertyGet("Count");
for(int i = 0; i < v_count; ++i)
if(m_pWorkBook->OlePropertyGet("WorkSheets", Variant(i + 1)).OlePropertyGet("Name") == Name)
{
*m_pWorkSheet = m_pWorkBook->OlePropertyGet("WorkSheets", Variant(i + 1));
b_found = true;
if(m_bSheetExists)//清空Excel数据
{
if (MessageDlg("是否清空<"+Name+">页",mtWarning, TMsgDlgButtons() << mbYes+mbNo, 0)==mrYes)
{
PropertyGet Range("Range");
PropertySet SetValue("Value");
Range.ClearArgs();
SetValue.ClearArgs();
}
}
break;
}

if(m_bWorsheetFirstTime)
{
*m_pWorkSheet = m_pWorkBook->OlePropertyGet("WorkSheets", Variant(1));
}
else if(!b_found)
{
*m_pWorkSheet = m_pWorkBook->OlePropertyGet("WorkSheets").OleFunction("Add");
}
}
catch(...)
{
delete m_pWorkBook;
delete m_pWorkSheet;

m_pWorkBook = NULL;
m_pWorkSheet = NULL;

if(m_pExcel && !int(m_pExcel->OlePropertyGet("WorkBooks").OlePropertyGet("Count")))
{
m_pExcel->OleFunction("Quit");
delete m_pExcel;
m_pExcel = NULL;
}

return CreateWorkSheet(Name);
}
PropertySet psName("Name");
m_pWorkSheet->Exec(psName << Name);

m_Title1 = Name;//标题头1

if (!m_Suspended)
{
m_pExcel->OlePropertySet("Visible", Variant(true));
m_pWorkSheet->OlePropertySet("Visible", Variant(true));
}
else
{
m_pExcel->OlePropertySet("Visible", Variant(false));
//m_pWorkSheet->OlePropertySet("Visible", Variant(false));
}
m_bWorsheetFirstTime = false;
}
return m_pWorkSheet;
}
BSC 2003-08-23
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------
#ifndef ExcelWorkH
#define ExcelWorkH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Dialogs.hpp>
#include <DB.hpp>
#include <ADODB.hpp>
//---------------------------------------------------------------------------
class TXclWorksheet
{
private:
Variant* m_pExcel;
Variant* m_pWorkBook;
Variant* m_pWorkSheet;
//TdxTreeList* m_pTreeList;
//TMain* m_pMain;
bool m_Suspended;
bool m_bAlreadyOpened;
bool m_bSheetExists;
bool m_bWorsheetFirstTime;

AnsiString m_Title1;
AnsiString __fastcall IndicesToExcel(int iCol, int iRow);
// void __fastcall RecursiveTreeListFill(TdxTreeListNode* pNode, int& iCol, int& iRow, int& iLvl, bool& bOnlyVisible);
void __fastcall FillColumnTitles(int& iCol, int& iRow);
protected:
Variant __fastcall GetCell(int iCol, int iRow);
Variant __fastcall GetCellValue(int iCol, int iRow);
void __fastcall SetCellValue(int iCol, int iRow, Variant vValue);
public:
__fastcall TXclWorksheet(/*TMain* pMain, */bool bSuspended);
__fastcall ~TXclWorksheet();

void __fastcall OpenExcel();
void __fastcall CloseExcel();

void __fastcall SaveWorkbook(AnsiString Name);
void __fastcall LoadWorkbook(AnsiString Name);

Variant* __fastcall CreateWorkBook();
Variant* __fastcall CreateWorkSheet(AnsiString Name = "UTPOWER");
void __fastcall SetVisiable(bool isVisable);
void __fastcall PrintPreview();
void __fastcall Print();

Variant __fastcall MergeCells(int iColMin, int iRowMin, int iColMax, int iRowMax);
Variant __fastcall GetRange(int iColMin, int iRowMin, int iColMax, int iRowMax);

//H是否行显示数据
void __fastcall CreateExcelReport(TDataSet* DSource,int iCol, int iRow, bool H);
//设置单元格属性
void __fastcall SetCellStyleBlock(int iColMin, int iRowMin, int iColMax, int iRowMax,
bool isMerge,bool isBold,int ColorIdx,int FSize,AnsiString FName,AnsiString TitleArr);

void __fastcall ADODataSetToExcel(TCustomADODataSet *ADataSet, const String AFileName);

__property Variant __fastcall Cell[int iCol][int iRow] = { read = GetCell };
__property Variant __fastcall CellValue[int iCol][int iRow] = { read = GetCellValue,write = SetCellValue };
};
#endif

//---------------------------------------------------------------------------
#ifndef SettingStyleBlock
#define SettingStyleBlock(MsExcel,Sheet,isMerge,isBold,Rg,ColorIdx,FSize,FName,TitleArr) \
MsExcel = Sheet.OlePropertyGet("Range", Rg);\
if (isMerge)\
MsExcel.OleFunction("Merge");\
MsExcel.OlePropertyGet("Borders").OlePropertySet("ColorIndex",ColorIdx);\
MsExcel.OlePropertySet("HorizontalAlignment", 3);\
MsExcel.OlePropertySet("VerticalAlignment", 2);\
MsExcel.OlePropertyGet("Font").OlePropertySet("Size",FSize);\
MsExcel.OlePropertyGet("Font").OlePropertySet("Name",FName);\
if (isBold)\
MsExcel.OlePropertyGet("Font").OlePropertySet("Bold",true);\
MsExcel.OlePropertySet("Value",TitleArr);
#endif

dhua_fj 2003-08-23
  • 打赏
  • 举报
回复
MSExcel.OlePropertyGet("ActiveWorkBook").OlePropertyGet("ActiveSheet")
.OlePropertyGet("Range","A1").OlePropertyGet("Value")//取值
或.OlePropertyGet("FormulaR1C1")//取公式
azuly 2003-08-23
  • 打赏
  • 举报
回复
谢谢诸位,正在慢慢看......

其实我只是要读取而已,简单一些代码可以吧?
Behard 2003-08-22
  • 打赏
  • 举报
回复
看我以前写的一个函数:
/*******************************************************************************
* Function Name : AddData
* Description : 填充数据
* Return : -
* Parameters : *lpData[] - 具体的数据(指针数组),【标题】
: iCount - 数据的数目
: iRowsPoint - 对应一行
* Author : Behard
* Date : 2002/09/02
*******************************************************************************/
extern "C" void __declspec(dllexport) __stdcall AddData(//Variant MSExcel,
char *lpData[], //具体的数据(数组指针)
int iCount, //数据的数目
int iRowsPoint) //那一行
{
int i;
char strSet[20] ;

try{
//特别注意:OlePropertyGet 等函数的参数是从 1 开始的,非 0
for(i=0; i<iCount /*&& i<STRINGNUMBER*/; i++)
{
//为单元格填值
MSExcel.OlePropertyGet("ActiveWorkBook").OlePropertyGet("ActiveSheet").OlePropertySet("Cells",iRowsPoint,(Variant)(i+1),((AnsiString)"'"+(*(lpData+i))).c_str());//.OlePropertySet("Value", "12");

//设置对齐方式
//垂直对齐 2:左端对齐,3:居中, 4:右端对齐 注意:不是 1、2、3
if(i<='Z'-'A')sprintf(strSet, "%c%d", ('A'+i), iRowsPoint );
else sprintf(strSet, "%c%c%d", ('A'+ i/('Z'-'A'+1) -1), ('A'+ i%('Z'-'A'+1) ), iRowsPoint );
MSExcel.OlePropertyGet("ActiveWorkBook").OlePropertyGet("ActiveSheet").OlePropertyGet("Range",strSet).OlePropertySet("HorizontalAlignment",2);
//水平对齐 1:顶端对齐,2:居中, 3:底端对齐
MSExcel.OlePropertyGet("ActiveWorkBook").OlePropertyGet("ActiveSheet").OlePropertyGet("Range",strSet).OlePropertySet("VerticalAlignment",2);
}
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
//ShowMessage("AddData!") ;
}
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于VB.NET, C#, VB, VC, Delphi, BCB, 易语言等。B/S开发适用于ASP.NET, ASP, PHP, JSP(Java)等,支持所有操作系统服务器与WEB服务器。开发C/S报表与B/S报表共享相同的开发知识与设计资源。提供独有的报表查询显示功能,让报表查询显示、打印、打印预览及数据导出等功能集成一体化实现。轻松实现表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、表中表及各种特殊报表等,是中式报表的最佳开发工具。提供详尽帮助文档与各种编程平台下的丰富例子,安装中包括可直接运行例子程序,安装后即刻体验此报表工具。Unicode编码,多国语言集成支持。历经数年发展,多家有影响力的通用软件厂商选用,用户遍布各行各业,已经成为用户受众面最广的国产报表工具。 Grid++Report 报表组件具有如下特点: 1、支持C/S报表与B/S报表开发,支持全部主流开发语言。C/S开发:VB.NET、C#、VB、VC、Delphi等,B/S开发:ASP.NET、ASP、PHP、JSP等,支持所有WEB服务器。 2、多国语言集成支持与UNICODE编码支持,方便开发多国语言软件。 3、功能强大,稳定高效:实现表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,适合开发通用软件中的动态报表。 4、独有的报表查询显示功能:提供报表查询与输出的集成一次性实现,保证数据不同展现方式的一致性与完整性。 5、报表数据来源丰富:支持绑定(报表数据拉模式)与非绑定(报表数据推模式),一切数据数据与其它数据都可以作为报表数据源。 6、提供图表功能,包括:饼图、叠加饼图、柱状图、气泡图、折线图、曲线图、散点图等,支持三维图形。 7、报表数据导出格式丰富,格式包括:Excel、RTF、PDF、图像、HTML、文本,CSV 等。 8、支持数十种一维条码,支持PDF417与QRCode这两种最常用的二维条码,条码打印精度高且易读取。 9、提供脚本编程功能,直接在报表模板中自定义报表行为,采用通用的JScript与VBScript脚本引擎。 10、特有的分组单元格合并功能,轻松实现常见的中国式报表分组在中展现并垂直居中要求。 11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层表头等。很多在国外报表工具中很难实现的功能都可以轻易实现。 12、提供丰富交互事件,轻松实现报表行为自定义、穿透(透视)查询和报表交互。 13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复重做(Undo/Redo)功能,专业的拖放操作与即时编辑功能。 15、编写了完整详尽的帮助文档。提供了丰富例程,C/S报表包括VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、中文编程易语言,B/S报表包括ASP.NET,ASP,PHP,JSP。 Grid++Report 网站:http://www.rubylong.cn Grid++Report 演示:http://www.rubylong.cn/WebReport
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于VB.NET, C#, VB, VC, Delphi, BCB, 易语言等。B/S开发适用于ASP.NET, ASP, PHP, JSP(Java)等,支持所有操作系统服务器与WEB服务器。开发C/S报表与B/S报表共享相同的开发知识与设计资源。提供独有的报表查询显示功能,让报表查询显示、打印、打印预览及数据导出等功能集成一体化实现。轻松实现表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、表中表及各种特殊报表等,是中式报表的最佳开发工具。提供详尽帮助文档与各种编程平台下的丰富例子,安装中包括可直接运行例子程序,安装后即刻体验此报表工具。Unicode编码,多国语言集成支持。历经数年发展,多家有影响力的通用软件厂商选用,用户遍布各行各业,已经成为用户受众面最广的国产报表工具。 Grid++Report 报表组件具有如下特点: 1、支持C/S报表与B/S报表开发,支持全部主流开发语言。C/S开发:VB.NET、C#、VB、VC、Delphi等,B/S开发:ASP.NET、ASP、PHP、JSP等,支持所有WEB服务器。 2、多国语言集成支持与UNICOD E编码支持,方便开发多国语言软件。 3、功能强大,稳定高效:实现表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,适合开发通用软件中的动态报表。 4、独有的报表查询显示功能:提供报表查询与输出的集成一次性实现,保证数据不同展现方式的一致性与完整性。 5、报表数据来源丰富:支持绑定(报表数据拉模式)与非绑定(报表数据推模式),一切数据数据与其它数据都可以作为报表数据源。 6、提供图表功能,包括:饼图、叠加饼图、柱状图、气泡图、折线图、曲线图、散点图等,支持三维图形。 7、报表数据导出格式丰富,格式包括:Excel、RTF、PDF、图像、HTML、文本,CSV 等。 8、支持数十种一维条码,支持PDF417与QRCode这两种最常用的二维条码,条码打印精度高且易读取。 9、提供脚本编程功能,直接在报表模板中自定义报表行为,采用通用的JScript与VBScript脚本引擎。 10、特有的分组单元格合并功能,轻松实现常见的中国式报表分组在中展现并垂直居中要求。 11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层表头等。很多在国外报表工具中很难实现的功能都可以轻易实现。 12、提供丰富交互事件,轻松实现报表行为自定义、穿透(透视)查询和报表交互。 13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复重做(Undo/Redo)功能,专业的拖放操作与即时编辑功能。 15、编写了完整详尽的帮助文档。提供了丰富例程,C/S报表包括VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、中文编程易语言,B/S报表包括ASP.NET,ASP,PHP,JSP。 Grid++Report 网站:http://www.rubylong.cn Grid++Report 演示:http://www.rubylong.cn/WebReport
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于C#, VB.NET, VB, VC, Delphi, BCB, 易语言等。B/S开发适用于ASP.NET, JSP(Java), ASP, PHP 等,支持所有操作系统与WEB服务器。开发C/S报表与B/S报表共享相同的开发知识与设计资源。提供独有的报表查询展示功能,让报表查询展示、打印、打印预览及数据导出等集成一体化实现。轻松实现表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、表中表及各种特殊报表等,是中式报表的最佳开发工具。提供详尽帮助文档与各种编程平台下的丰富例子,安装中包括可直接运行例子程序,安装后即刻体验报表功能。Unicode编码,多国语言集成支持。历经数年发展,多家有影响力的通用软件厂商选用,用户遍布各行各业,已经成为用户受众面最广的国产报表工具。 Grid++Report 报表组件具有如下特点: 1、支持C/S报表与B/S报表开发,支持全部主流开发语言。C/S开发:VB.NET、C#、VB、VC、Delphi等,B/S开发:ASP.NET、JSP、ASP、PHP等,支持所有WEB服务器。 2、多国语言集成与UNICODE编码支持,方便开发多国语言软件。 3、功能强大,稳定高效:实现表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,适合开发通用软件中的动态报表。 4、独有的报表查询显示功能:提供报表查询与输出的集成一次性实现,保证数据不同展现方式的一致性与完整性。 5、报表数据来源丰富:支持绑定(报表数据拉模式)与非绑定(报表数据推模式),一切数据数据与其它数据都可以作为报表数据源。 6、提供图表功能,包括:饼图、叠加饼图、柱状图、气泡图、折线图、曲线图、散点图等,支持三维图形。 7、报表数据导出格式丰富,格式包括:Excel、RTF、PDF、图像、HTML、文本,CSV 等。 8、支持数十种一维条码,支持PDF417与QRCode这两种最常用的二维条码,条码打印精度高且易读取。 9、提供脚本编程功能,直接在报表模板中自定义报表行为,采用通用的JScript与VBScript脚本引擎。 10、特有的分组单元格合并功能,轻松实现常见的中国式报表分组在中展现并垂直居中要求。 11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层表头等。很多在国外报表工具中很难实现的功能都可以轻易实现。 12、提供丰富交互事件,轻松实现报表行为自定义、穿透(透视)查询和报表交互。 13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复重做(Undo/Redo)功能,专业的拖放操作与即时编辑功能。 15、编写了完整详尽的帮助文档。提供了丰富例程,C/S报表包括VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、中文编程易语言,B/S报表包括ASP.NET,ASP,PHP,JSP。 Grid++Report 网站:http://www.rubylong.cn Grid++Report 演示:http://www.rubylong.cn/WebReport Grid++Report 下载:http://www.rubylong.cn/download.htm
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于C#, VB.NET, VB, VC, Delphi, BCB, 易语言等。B/S开发适用于ASP.NET, JSP(Java), ASP, PHP 等,支持所有操作系统与WEB服务器。开发C/S报表与B/S报表共享相同的开发知识与设计资源。提供独有的报表查询展示功能,让报表查询展示、打印、打印预览及数据导出等集成一体化实现。轻松实现中式表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、条形码等,是中式复杂报表的最佳开发工具。提供详尽帮助文档与各种编程语言下的丰富例子,安装中包括可直接运行例子程序,安装后即刻体验报表功能。Unicode编码,多国语言集成支持。历经十年发展,多家有影响力的通用软件厂商选用,用户遍布各行各业,已经成为用户受众面最广的国产报表工具。 Grid++Report 报表组件具有如下特点: 1、支持C/S报表与B/S报表开发,支持全部主流开发语言。C/S开发:VB.NET、C#、VB、VC、Delphi等,B/S开发:ASP.NET、JSP、ASP、PHP等,支持所有WEB服务器。 2、多国语言集成与UNICODE编码支持,方便开发多国语言软件。 3、功能强大,稳定高效:实现表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,适合开发通用软件中的动态报表。 4、独有的报表查询显示功能:提供报表查询与输出的集成一次性实现,保证数据不同展现方式的一致性与完整性。 5、报表数据来源丰富:支持绑定(报表数据拉模式)与非绑定(报表数据推模式),一切数据数据与其它数据都可以作为报表数据源。 6、提供图表功能,包括:饼图、叠加饼图、柱状图、气泡图、折线图、曲线图、散点图等,支持三维图形。 7、报表数据导出格式丰富,格式包括:Excel、RTF、PDF、图像、HTML、文本,CSV 等。 8、支持数十种一维条码,支持PDF417与QRCode这两种最常用的二维条码,条码打印精度高且易读取。 9、提供脚本编程功能,直接在报表模板中自定义报表行为,采用通用的JScript与VBScript脚本引擎。 10、特有的分组单元格合并功能,轻松实现常见的中国式报表分组在中展现并垂直居中要求。 11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层表头等。很多在国外报表工具中很难实现的功能都可以轻易实现。 12、提供丰富交互事件,轻松实现报表行为自定义、穿透(透视)查询和报表交互。 13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复重做(Undo/Redo)功能,专业的拖放操作与即时编辑功能。 15、编写了完整详尽的帮助文档。提供了丰富例程,C/S报表包括VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、中文编程易语言,B/S报表包括ASP.NET,ASP,PHP,JSP。
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于VB.NET, C#, VB, VC, Delphi, BCB, 易语言等。B/S开发适用于ASP.NET, JSP(Java), ASP, PHP 等,支持所有操作系统与WEB服务器。开发C/S报表与B/S报表共享相同的开发知识与设计资源。提供独有的报表查询展示功能,让报表查询展示、打印、打印预览及数据导出等集成一体化实现。轻松实现表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、表中表及各种特殊报表等,是中式报表的最佳开发工具。提供详尽帮助文档与各种编程平台下的丰富例子,安装中包括可直接运行例子程序,安装后即刻体验此报表工具。Unicode编码,多国语言集成支持。历经数年发展,多家有影响力的通用软件厂商选用,用户遍布各行各业,已经成为用户受众面最广的国产报表工具。 Grid++Report 报表组件具有如下特点: 1、支持C/S报表与B/S报表开发,支持全部主流开发语言。C/S开发:VB.NET、C#、VB、VC、Delphi等,B/S开发:ASP.NET、JSP、ASP、PHP等,支持所有WEB服务器。 2、多国语言集成与UNICODE编码支持,方便开发多国语言软件。 3、功能强大,稳定高效:实现表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,适合开发通用软件中的动态报表。 4、独有的报表查询显示功能:提供报表查询与输出的集成一次性实现,保证数据不同展现方式的一致性与完整性。 5、报表数据来源丰富:支持绑定(报表数据拉模式)与非绑定(报表数据推模式),一切数据数据与其它数据都可以作为报表数据源。 6、提供图表功能,包括:饼图、叠加饼图、柱状图、气泡图、折线图、曲线图、散点图等,支持三维图形。 7、报表数据导出格式丰富,格式包括:Excel、RTF、PDF、图像、HTML、文本,CSV 等。 8、支持数十种一维条码,支持PDF417与QRCode这两种最常用的二维条码,条码打印精度高且易读取。 9、提供脚本编程功能,直接在报表模板中自定义报表行为,采用通用的JScript与VBScript脚本引擎。 10、特有的分组单元格合并功能,轻松实现常见的中国式报表分组在中展现并垂直居中要求。 11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层表头等。很多在国外报表工具中很难实现的功能都可以轻易实现。 12、提供丰富交互事件,轻松实现报表行为自定义、穿透(透视)查询和报表交互。 13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复重做(Undo/Redo)功能,专业的拖放操作与即时编辑功能。 15、编写了完整详尽的帮助文档。提供了丰富例程,C/S报表包括VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、中文编程易语言,B/S报表包括ASP.NET,ASP,PHP,JSP。 Grid++Report 网站:http://www.rubylong.cn Grid++Report 演示:http://www.rubylong.cn/WebReport

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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