我看了一些中国式报表,可以在设计报表的时候拉动网格行或列,来改变网格的大小
其中有一种可以智能的改变字体的大小,来适应网格的大小,达到字体显示最优化。
请问是否有这样的报表控件,
或者根据算法写代码控制
解决高分相送,绝不食言!
其中有一种可以智能的改变字体的大小,来适应网格的大小,达到字体显示最优化。
请问是否有这样的报表控件,
或者根据算法写代码控制
解决高分相送,绝不食言!
解决方案 »
- 庆祝网站上线,散分喽!!!人人有份!!
- 问各位高手一个棘手的问题,有关串口通信的(在线急等)
- 关于窗口停靠问题!!!
- QRDesign如何用、安装,谁有序列号?100分不够,可以另外在给!
- ■■寻找VC++程序高手,有小项目合作,是高手的请进■■
- 没有工作 心情极度郁闷 散分
- 50分征求好用的注册表扫描比较工具(正式版的),急用!解决了立即给分!!
- ADO排斥触发器?
- 谁用过Ehlib控件?DBGridEh控件的页脚属性怎么设?我想用页脚来计算一列的总值,怎么总显示0
- 用READ和WIRTE可以对文本文件进行读写,怎样对文本文件指定的行进行删除。给20分(只有这么多希望大家能给予帮助))
- WebBrowser组件,如何控制访问一个URL不成功后的界面?
- 小声的问一句:各位常用那个报表组件?
这种报表有我有那样的功能吗?
现在关键的问题是能处理每个网格
字体可以用矢量字体
只要哪种网格控件能控制每个单元格,并且能打印就可以了
其他的代码控制
不知是不是你想要的!
请参考!
请问有没有delphi用OLE处理EXCEL的详细例子
网上搜到的代码编译都不能通过
各位救急,谢谢!
Procedure TForm1.PrintBtnClick(Sender: TObject);
Var i, j, IntChar : integer;
Begin
//生成Excel标准列号并存储在字符串列表变量 ColumnName中;
ColumnName :=TStringList.Create;
IntChar :=Ord('A');
for i :=0 to (MAXCOL div 2)-1 do
ColumnName.Add(Chr(IntChar+i));
IntChar :=ord('A');
for i :=0 to (MAXCOL div 2)-1 do
ColumnName.Add('A'+Chr(IntChar+i));
try
//获得Excel的Application对象;
ExcelApp :=CreateOleObject('Excel.application');
except
ShowMessage('Can not start Excel. ');
exit;
end;
//增加新的工作簿,并设置当前的工作簿;
ExcelApp.Workbooks.Add;
ExcelApp.Workbooks.Item[1].Activate;
//插入Excel表格的标题;
ExcelApp.Activesheet.Cells(1,1) := TableCaption.Caption;
//用Content 中的值填充Excel表格;
for i :=1 to Content.RowCount do
for j :=1 to Content.ColCount do
ExcelApp.Activesheet.Cells(3+i,j):=Content.Cells[j-1,i-1];
//使Excel表格的标题跨列居中;
ExcelApp.Activesheet.Range['A1',ColumnName.Strings[Content.ColCount -1]+'1'].Select;
ExcelApp.Selection.HorizontalAlignment:= xlCenter;
ExcelApp.Selection.VerticalAlignment:= xlBottom;
ExcelApp.Selection.WrapText:= False;
ExcelApp.Selection.Orientation:= 0;
ExcelApp.Selection.AddIndent:= False;
ExcelApp.Selection.ShrinkToFit:= False;
ExcelApp.Selection.MergeCells:= True;
//使Excel 应用程序可见;
ExcelApp.Visible:=true;
end;
方法如下 :
1 、创建一个普通 Application 。
2 、在 Form 中分别放入 ExcelApplication, ExcelWorkbook 和 ExcelWorksheet 。
3 、对 Excel 的一些操作 ,具体方法如下 :
【打开 Excel97 】 ExcelApplication1.Connect; ExcelApplication1.Visible[0]:=True;【增加一个 Workbook 】 ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));【添加一个 Worksheet 】 var Temp_Worksheet: _WorkSheet; begin Try Temp_Worksheet:=ExcelWorkbook1. WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;//( 注意 ) ExcelWorkSheet1.ConnectTo(Temp_WorkSheet); Except ShowMessage('Failure'); End; end;【关闭 Excel 】 ExcelApplication1.Quit; ExcelWorksheet1.Disconnect; ExcelWorkbook1.Disconnect; ExcelApplication1.Disconnect;【选择当前 Workbook 的某一 Worksheet 】 procedure TForm1.ComboBox1DropDown(Sender: TObject); var i: Integer; begin ComboBox1.Clear; For i:=1 to ExcelWorkbook1.Worksheets.Count do ComboBox1.Items.Add((ExcelWorkbook1.Worksheets.Item[i] as _WorkSheet).Name); end;
procedure TForm1.ComboBox1Change(Sender: TObject); begin ExcelWorkSheet1.ConnectTo(ExcelWorkbook1.Worksheets.Item [ComboBox1.ItemIndex+1] as _WorkSheet); ExcelWorkSheet1.Activate; end;
【选择某一 Workbook 】 procedure TForm1.ComboBox2DropDown(Sender: TObject); var i: Integer; begin ComboBox2.Clear; if ExcelApplication1.Workbooks.Count >0 then For i:=1 to ExcelApplication1.Workbooks.Count do Combobox2.Items.Add(ExcelApplication1.Workbooks.Item[i].Name); end;
procedure TForm1.ComboBox2Change(Sender: TObject); begin ExcelWorkSheet1.Disconnect; ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.Item[Combobox2.ItemIndex+1]); ExcelWorkBook1.Activate; ExcelWorksheet1.ConnectTo(ExcelWorkBook1.ActiveSheet as _WorkSheet); ExcelWorkSheet1.Activate; end;
【对某一单元格进行赋值及取值】 procedure TForm1.Button5Click(Sender: TObject); begin ExcelWorksheet1.Cells.Item[SpinEdit2.Value,SpinEdit1.Value]:=Edit1.Text; end;
procedure TForm1.Button6Click(Sender: TObject); begin Edit1.Text:=ExcelWorksheet1.Cells.Item[SpinEdit2.Value,SpinEdit1.Value]; end;
【选择某一区域】 ExcelWorkSheet1.Range['A1','C1'].Select;
【打开一个 Excel 文件】 if OpenDialog1.Execute then Begin ExcelWorkBook1.ConnectTo( ExcelApplication1.Workbooks.Open( OpenDialog1.FileName,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)); ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Activesheet as _Worksheet); End;【存入一个 Excel 文件】 procedure TForm1.button6Click(Sender: TObject); var i,row,column:integer; begin Try ExcelApplication1.Connect; Except MessageDlg('Excel may not be installed',mtError, [mbOk], 0); Abort; End; ExcelApplication1.Visible[0]:=True; ExcelApplication1.Caption:='Excel Application'; ExcelApplication1.Workbooks.Add(Null,0); ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]); ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet); Table1.Open; row:=1; While Not(Table1.Eof) do begin column:=1; for i:=1 to Table1.FieldCount do begin ExcelWorksheet1.Cells.Item[row,column]: =Table1.fields[i-1].AsString; column:=column+1; end; Table1.Next; row:=row+1; end; End;
【打印预览一个 Excel 文件】 procedure TForm1.Button7Click(Sender: TObject); begin ExcelWorksheet1.PrintPreview; end;
【打印一个 Excel 文件】 procedure TForm1.Button8Click(Sender: TObject); begin ExcelWorksheet1.PrintOut; end;
你转载的内容我已经看过
不过不是我想要的功能
我的要求是:
将Excel嵌入到OleContainer中
并隐藏其工具条
使得其外观看上去跟普通的网格控件一样
并且网格内容只读
各位,江湖救急啊,分多的是!
并且网格内容只读****************************DBGridEh就可以实现比较复杂的表格功能,或者用其它的一些Grid控件。为什么非要用Excel呢?其实用OLEContainer嵌入对象效率非常低,是不得已而为之的做法
----------------
就是不得已而为之啊