office2k组件TExcelApplication如何读写电子表格?(非OLE)!!!

BCBPLC 2011-12-23 10:12:19
当年最早用OLE方式读写Excel的就是我写出的,是原创,早已到处被人抄、转,却没有人知道原创作者是谁,这就算了。
有的高校“教授”把我的原文稍改写了一下,就变成自已的“学术论文”发表了,可见“教授“的水平多深,呵呵。。。。。
但我总觉得OLE要启动EXCEL进程速度太慢,C++BUILDER6上有office2k组件,有TexcelApplication等组件,不知读写
电子表格的效果怎样?怎么读呢,没找到例子和邦助。


...全文
184 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BCBPLC 2011-12-26
  • 打赏
  • 举报
回复
XLSReadWriteII for C++BUILDER6
安装后,出现XLS组,有三个控件。工程存盘时,却出现要静态库与头文件,
将所有文件复制至C++BUILDER缺省目录include ,vcl,lib仍不行;
不知怎解决
BCBPLC 2011-12-25
  • 打赏
  • 举报
回复
http://www.axolot.com/components/download.htm
BCBPLC 2011-12-25
  • 打赏
  • 举报
回复
我搜了一下,找到了它的官方网站,是要授权的,这有破解版吗
BCBPLC 2011-12-25
  • 打赏
  • 举报
回复
XLSReadWriteII我很感兴趣,两位的建议我试试。
BCBPLC 2011-12-25
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Format a single cell
XLS->Sheet[ 0 ]->AsString[ 0][1 ] = "Cell 1";
XLS->Sheet[ 0 ]->Cell[ 0][1 ]->FillPatternForeColor = xcRed;
// Don't know how to write this in C++ ...
// XLS->Sheet[ 0 ]->Cell[ 0][1 ]->FontStyle = [xfsBold,xfsItalic];

// Write a string cell->
XLS->Sheet[ 0 ]->AsStringRef[ "C2" ] = "Hello";
// Set the font size of the cells in the area
XLS->Sheet[ 0 ]->Range->Items[1][0][3][3]->FontSize = 14;
// Set the color of the cells->
XLS->Sheet[ 0 ]->Range->ItemsRef[ "B1:D4" ]->FillPatternForeColor = xcYellow;
// Set a outline border->
XLS->Sheet[ 0 ]->Range->ItemsRef[ "B1:D4" ]->BorderOutlineStyle = cbsThick;
// Set color of the outline border->
XLS->Sheet[ 0 ]->Range->ItemsRef[ "B1:D4" ]->BorderOutlineColor = xcRed;
// Make a copy of the cells->
XLS->Sheet[ 0 ]->Range->ItemsRef[ "B1:D4" ]->Copy( 8, 10 );
// Move the cells->
XLS->Sheet[ 0 ]->Range->ItemsRef[ "B1:D4" ]->Move( 8, 2 );

XLS->Filename = edFilename->Text;
XLS->Write();
}
//-------------------------------
BCBPLC 2011-12-25
  • 打赏
  • 举报
回复
1.好象此控件并没有加密,我安装好了,只要求当一本书一样使用;
2.主要许多用户喜欢用EXCEL组织数据,要自动导到数据库里,就需要此控件;
3。至于导出到EXCEL不需要控件,只要生成文本CSV格式的EXCEL表格就可以了,非常快;
ccrun.com 2011-12-24
  • 打赏
  • 举报
回复
我朝的砖家叫兽,有两个枪毙一双,没有一个冤枉的。

TExcelApplication相关的组件也是通过OLE方式实现的。真正不依赖Office访问Excel文档,可以用3楼说的XLSReadWriteII组件。
柯本 2011-12-24
  • 打赏
  • 举报
回复
我一般用XLSReadWriteII,客户端office都不用安装,测试下来速度比OLE高很多
美到心痛 2011-12-23
  • 打赏
  • 举报
回复
沒用過,我讀excel就用過ado
BCBPLC 2011-12-23
  • 打赏
  • 举报
回复
http://wenku.baidu.com/view/ce75c72d0066f5335a8121aa.html
狗屁教授孙永林
//About my self excel control ..... study data // for your information... unit toxls5butt; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Excel2000, OleServer; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; CheckBox1: TCheckBox; Button5: TButton; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; // ExcelWorksheet1: TExcelWorksheet; // ExcelOLEObject1: TExcelOLEObject; // ExcelWorkbook1: TExcelWorkbook; // ExcelApplication1: TExcelApplication; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private v:variant; sheet:variant; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation { *.dfm} uses comobj; procedure TForm1.Button1Click(Sender: TObject); begin try V:=createoleobject(‘excel.application‘); v.visible:=checkbox1.Checked; v.workbooks.add; v.workbooks[1].worksheets[1].name:=‘good‘; sheet:=v.workbooks[1].worksheets[1]; sheet.cells[3,1]:=‘31‘; sheet.cells[2,1]:=‘21‘; sheet.cells[1.5]:=‘15‘; sheet.cells[2,2]:=‘22‘; v.workbooks[1].worksheets[2].name:=‘love‘; sheet:=v.workbooks[1].worksheets[2]; sheet.cells[3,4]:=‘34hello‘; // sheet:=v.workbooks[1].worksheets[‘helloaaa‘]; except showmessage(‘excel init load error, not excel or other error!‘); v.displayalerts:=false; v.quit; exit; end; application.Restore; application.BringToFront; end; procedure TForm1.Button2Click(Sender: TObject); begin if opendialog1.Execute then begin try V:=createoleobject(‘excel.application‘); v.visible:=checkbox1.Checked; v.workbooks.open(opendialog1.FileName); except showmessage(‘excel init error, not excel or other error, try again‘); v.displayalerts:=false; v.quit; exit; end; application.Restore; application.BringToFront; end; end; procedure TForm1.Button3Click(Sender: TObject); begin try if not varisempty(v) then begin v.DisplayAlert:=true; v.workbooks[1].close(true,‘c:untitled.xls‘); v.workbooks[1].close(true,‘*.xls‘); v.quit; end; finally close; end; end; procedure TForm1.Button4Click(Sender: TObject); begin if opendialog1.Execute then begin try v:=createoleObject(‘excel.application‘); v.visible:=checkbox1.Checked; v.workbooks.open(opendialog1.FileName); sheet:=v.workbooks[1].worksheet[1]; sheet.pagesetup.printtitlerows:=‘$1:$3‘; //page head sheet.pagesetup.printtitlecolumns:=‘‘; sheet.pagesetup.leftfooter:=‘Noted: PageHead‘+‘sum total&N page ‘+‘--No.&Page‘; //pagehead sheet.pagesetup.leftmargin:=30; //偞离?擒 Sheet.PageSetup.RightMargin := 30; Sheet.PageSetup.TopMargin := 30; Sheet.PageSetup.BottomMargin := 50; Sheet.PageSetup.PrintQuality := 300; //賤昴僅(跦?荂桶復隅) Sheet.PageSetup.CenterHorizontally := True;//岆瘁阨懈笢 Sheet.PageSetup.CenterVertically := True; //岆瘁晶眻懈笢 Sheet.PageSetup.Orientation := 2; //砃蹈荂 Sheet.PageSetup.Draft := False; //準翌詨耀宒 Sheet.PageSetup.FirstPageNumber := xlAutomatic; Sheet.PageSetup.BlackAndWhite := false; //窪啞詨 Sheet.PageSetup.Zoom := 100; //窺溫 sheet.PrintPreView; //蹈荂蕼罜 except Showmessage(‘initiale error ㄛnot Excelㄛor other error ˙try again!‘); v.DisplayAlerts := false; v.Quit; // finally exit; end; end; end; end.

13,825

社区成员

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

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