报表的打印是每个项目都会遇到的问题。由于报表格式要求五花八门,往往又同时要求打印格式可方便调整。作为一种替代方法,可以将需要打印的报表导出到Excel/Word,打印交给Office去吧。由于Office的普及度较高,用户比较熟悉,也容易接受。 下面主要是在开发中涉及到的在Delphi中写Excel文件方面的问题,直接用代码行来举例说明。测试所用Excel的版本为9.0,即Excel2000 1、总的思路是将EXCEL作为一个OLE对象来操作。
//在单元use部分加上:ComObj, Excel2000,并作如下定义: 2、Excel程序对象的操作/设置
//创建
ExcelApp := CreateOleObject( 'Excel.Application' ); //设置Excel窗口可见
ExcelApp.Visible := True; //增加一个工作簿
ExcelApp.WorkBooks.Add; Book := ExcelApp.Workbooks[1]; //增加一个工作表
Book.Worksheets.Add; Sheet := Book.Worksheets[1]; //保存文件
Sheet.SaveAs(FileName); //退出Excel与释出
if not VarIsEmpty(ExcelApp) then ExcelApp.Quit; ExcelApp := Unassigned; 3、区域操作/设置
//引用
Range := Sheet.Range['A2:B3']; //合并
Range.Merge; //赋值
Range.Value := ''赋值'; //格式
Range.NumberFormatLocal := '@'; //数字格式设置为文本 Range.NumberFormatLocal := 'yyyy-m-d'; //数字格式设置为yyyy-m-d日期 Range.HorizontalAlignment := xlCenter; //水平对齐 Range.VerticalAlignment := xlCenter; //垂直对齐 Range.Font.Name := '黑体'; //字体 Range.Font.Size := 18; Range.Font.Bold := true; //边框 Range.Borders[xlEdgeLeft].LineStyle := xlContinuous; //左 Range.Borders[xlEdgeLeft].Weight := xlThin; Range.Borders[xlEdgeRight].LineStyle := xlContinuous; //右 Range.Borders[xlEdgeRight].Weight := xlThin; Range.Borders[xlEdgeTop].LineStyle := xlContinuous; //上 Range.Borders[xlEdgeTop].Weight := xlThin; Range.Borders[xlEdgeBottom].LineStyle := xlContinuous; //下 Range.Borders[xlEdgeBottom].Weight := xlThin; Range.Borders[xlInsideHorizontal].LineStyle := xlContinuous; //内竖 Range.Borders[xlInsideHorizontal].Weight := xlThin; Range.Borders[xlInsideVertical].LineStyle := xlContinuous; //内横 Range.Borders[xlInsideVertical].Weight := xlThin; 4、单元格操作/设置
//单元格采用行、列号引用,设 row、col为行、列号
//赋值
Sheet.Cells(row, col) := '赋值'; //设置格式同区域,改成这样来引用
Sheet.Cells.Item[row, col].HorizontalAlignment := xlCenter; 5、其它
//行高、列宽自适应
Sheet.Cells.Rows.AutoFit; Sheet.Cells.Columns.AutoFit; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论