如何将stringgrid中的内容打印出来呢?和数据库没有关系的。(0分)

  • 主题发起人 主题发起人 tiger_520
  • 开始时间 开始时间
T

tiger_520

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将stringgrid中的内容打印出来呢?和数据库没有关系的。大家请给个建议,
另我没有分了,事情比较急,请大家指教啊。
 
1。动态创建报表
2 利用控件
3 导出到excel打印
 
happyloner,能不能给出代码啊?
 
用stringgrid的canvas画吧!想怎么打印就怎么打印!就是麻烦点。。。
 
导出到EXCEL该如何做啊??
 
那CANVAS该如何操作呢?EGO?
 
我现在用
with printer do
begin
BeginDoc;
stringgrid1.Canvas.TextRect(stringgrid1.CellRect(Acol,Arow),rect.Top,rect.Left,stringgrid1.Cells[Acol,Arow]);
EndDoc;
end
都打印不出来啊!!
 
printer.Canvas.TextOut(int X, int Y, const AnsiString Text);
 
用CopyRect()函数,用法看帮助!
最简单的就是用Form的打印功能。
 
能否将stringgrid中的内容保存为文本格式呢?如果可以该如何做呢?
 
stringgrid的col和row的属性可以savetofile.不过它是TStrings格式的。
你可以声明一个TStrings变量,然后一行一行地load进去,再save
 
ego为什么我用:
procedure form.button1click;
begin
for i:=0 to stringgrrid1.rowcount-1 do
for j:=0 to stringgrid1.colcount-1 do
begin
printer.canvas.textout(rect.top,rect.left,stringgrid1.cells[i,j]);
end;
end;
没有办法打印出来呢?
 
以前有这样的问题:“如何将StringGrid里的内容打印出来”,
在DFW中查一下。
 
不会呀,我以前做的报表用的就是printer。可惜太久了,找不到,不然可以发给你。
你转换了打印分辨率和屏幕分辨率了吗?
如果两者的分辨率没有转换,打印就会乱七八糟的。
 
引用一下别人的东东:
uses printers
ppix, ppiy: Integer;
procedure Getppi(DC: HDC);
begin
ppix := GetDeviceCaps(DC, logPixelsX); //得到屏幕分辨率
ppiy := GetDeviceCaps(DC, logPixelsY);
end;

function CmToPixelX(cm: Real): Integer;
begin
Result := Trunc(Cm * ppix / 2.54); //进行转换
end;

function CmToPixelY(cm: Real): integer;
begin
Result := Trunc(Cm * ppiy /2.54);
end;
 
EGO麻烦能不能给出个将stringgrid的内容全部保存到一个文本文件的代码啊?
 
原理都说了!
还是自己DIY吧
 
//导出到excel的代码
procedure WriteExcel(title:string);
var
i, j: integer;
begin
try
ExcelApplication1 := TExcelApplication.Create(Application);
ExcelWorksheet1 := TExcelWorksheet.Create(Application);
ExcelWorkbook1 := TExcelWorkbook.Create(Application);
ExcelApplication1.Connect;
except
Application.Messagebox('Excel 导出失败,请检查是否安装了Excel或注销系统后再运行','错误', MB_ICONERROR + mb_Ok);
Abort;
end;
try
ExcelApplication1.Workbooks.Add(EmptyParam, 0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
ExcelWorksheet1.Cells.item[1, 3] := Title;
ExcelWorksheet1.Cells.Item[1, 3].font.size := '14';
ExcelWorksheet1.Cells.item[1, 3].font.Bold := true;
for j := 0 to StringGrid1.ColCount - 1 do
begin
ExcelWorksheet1.Cells.item[3, j + 1] := StringGrid1.cells[j,0];
ExcelWorksheet1.Cells.item[3, j + 1].font.size := '10';
ExcelWorksheet1.Cells.item[3, j + 1].font.Bold := true; //??
end;
for i := 1 to StringGrid1.RowCount-1 do
for j := 0 to StringGrid1.ColCount-1 do
ExcelWorksheet1.Cells.item[i+3, j + 1]:=StringGrid1.Cells[j,i];

ExcelApplication1.visible[0]:=true;
except
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication1.Free;
ExcelWorksheet1.Free;
ExcelWorkbook1.Free;
end;
end;
 
接受答案了.
 
后退
顶部