Delphi导出Excel的设置操作

procedure CreatRepSheet(SheetName:String;PageSize,PageLay:Integer);
{新建Excel工作簿、进行页面设置}
begin
  {新建Excel工作簿}
  if ExlApp.WorkBooks.Count < 1 then
  begin
    ExlBook := ExlApp.Workbooks.Add; //ExlBook:=ExlApp.WorkBooks[1].WorkSheets[1];
    ExlApp.ActiveSheet.Name:=SheetName;
  end; {if} 

  {进行页面设置} 

  以上是怎么不用空间而调用EXCEL的, 很方便的!
  //设置页面
  if PageSize=1 then
    ExlApp.ActiveSheet.PageSetup.PaperSize := xlPaperA3; //纸张大小: A3
  if PageSize=2 then
    ExlApp.ActiveSheet.PageSetup.PaperSize := xlPaperA4; //纸张大小: A4
  if PageSize=3 then
    ExlApp.ActiveSheet.PageSetup.PaperSize := xlPaperB5; //纸张大小: B5
  if PageLay=1 then
    ExlApp.ActiveSheet.PageSetup.Orientation := xlportrait; //页面放置方向:纵向
  if PageLay=2 then
    ExlApp.ActiveSheet.PageSetup.Orientation := xlLandscape; //页面放置方向:横向 

  //设置页宽自动适应
  ExlApp.ActiveSheet.PageSetup.Zoom := False;
  ExlApp.ActiveSheet.PageSetup.FitToPagesWide := 1;
  ExlApp.ActiveSheet.PageSetup.FitToPagesTall := False; 

  //设置页眉、页脚(即:页标题、页号)
  ExlApp.ActiveSheet.PageSetup.RightFooter := ‘打印时间: ‘ + ‘&D &T‘;
  ExlApp.ActiveSheet.PageSetup.CenterFooter := ‘第&‘‘&P&‘‘页,共&‘‘&N&‘‘页‘;

  //设置页边距:
  ExlApp.ActiveSheet.PageSetup.TopMargin := 1.5/0.035;
  ExlApp.ActiveSheet.PageSetup.BottomMargin := 1.5/0.035;
  ExlApp.ActiveSheet.PageSetup.LeftMargin := 1/0.035;
  ExlApp.ActiveSheet.PageSetup.RightMargin := 1/0.035;
  ExlApp.ActiveSheet.PageSetup.HeaderMargin:= 0.5/0.035;
  ExlApp.ActiveSheet.PageSetup.FooterMargin := 0.5/0.035; 

  //设置页面对齐方式
  ExlApp.ActiveSheet.PageSetup.CenterHorizontally := True; //页面水平居中
  //ExlApp.ActiveSheet.PageSetup.CenterVertically := True; //页面垂直居中 

  //设置整体字体格式
  ExlApp.Cells.Font.Name := ‘宋体‘; //字体
  ExlApp.Cells.Font.Size := 12; //字号
  ExlApp.Cells.RowHeight := 16; //行高
  ExlApp.Cells.VerticalAlignment := 2; //垂直方向对齐方式:居中
end; {CreatRepSheet} 

procedure SetAddMess(H_Mess1,H_Mess2,H_Mess3,F_Mess1,F_Mess2,F_Mess3:String);

//用户自定义页眉、页脚(即:页标题、页号)

begin

  ExlApp.ActiveSheet.PageSetup.LeftHeader:=H_Mess1;

  ExlApp.ActiveSheet.PageSetup.CenterHeader:=H_Mess2;

  ExlApp.ActiveSheet.PageSetup.RightHeader:=H_Mess3;

end;{SetAddMess}

procedure SetRepBody(x,ch:Integer;cw:Double;cf:String);

//设置整体各列数据格式

begin

  ExlApp.ActiveSheet.Columns[x].ColumnWidth:=cw; //列宽

  ExlApp.ActiveSheet.Columns[x].NumberFormat:=Cf; //单元格数据格式

  ExlApp.ActiveSheet.Columns[x].HorizontalAlignment:=ch; //水平方向对齐方式

end;{SetRepBody}

procedure CreatTitle(TitleName:String;y:Integer);

{设置标题}

Var

  RepSpace:String;

begin

  CellMerge(1,1,1,y);

  ExlApp.cells(1,1):=TitleName;

  RepSpace:=‘A1‘+‘:‘+GetRepRange(1,y);

  ExlApp.Range[RepSpace].Select;

  ExlApp.Selection.NumberFormat :=‘G/通用格式‘;

  ExlApp.Selection.Font.Size:=22;

  ExlApp.Selection.Font.Name:=‘黑体‘;

  ExlApp.Selection.Font.Bold:=True;

  ExlApp.Selection.HorizontalAlignment:=3; //水平方向对齐方式:居中

  ExlApp.Rows[1].RowHeight:=28;

end;{RepHead}

procedure CreatSubHead(SubTitle: Array of String);

{设置常规子表头}

Var

  i,j:Integer;

begin

  j:=0;

  for i:=Low(SubTitle) to High(SubTitle) do

  begin

    Inc(j);

    ExlApp.cells(2,j):=SubTitle[i];

  end;

end;{CreatRepHead}

procedure SubHeadFormat(y,r:Integer);

{设置子表头格式}

Var

  RepSpace:String;

  n:Integer;

begin

  RepSpace:=‘A2‘+‘:‘+GetRepRange(1+r,y);

  ExlApp.Range[RepSpace].Select;

  ExlApp.Selection.NumberFormat :=‘G/通用格式‘;

  ExlApp.Selection.HorizontalAlignment:=3; //表头水平对齐方式:居中

  ExlApp.Selection.Font.Bold:=True;

  for n:=1 to r do

  begin

    ExlApp.Rows[1+n].RowHeight:=18;

    SetRepLine(1+n,y);

  end;{for}

end;{SubHeadFormat}

procedure DTSubHeadGS(x,y,r:Integer);

{设置动态子表头格式}

Var

  RepSpace:String;

  n:Integer;

begin

  RepSpace:=GetRepRange(x,1)+‘:‘+GetRepRange(x+r-1,y);

  ExlApp.Range[RepSpace].Select;

  ExlApp.Selection.NumberFormat :=‘G/通用格式‘;

  ExlApp.Selection.HorizontalAlignment:=3; //表头水平对齐方式:居中

  ExlApp.Selection.Font.Bold:=True;

  for n:=0 to r-1 do

  begin

    ExlApp.Rows[x+n].RowHeight:=18;

    SetRepLine(x+n,y);

  end;{for}

end;{DTSubHeadGS}

procedure WriteData(RepData: String; x,y,flag:Integer); //写入数据

{写数据}

begin

  if flag=1 then

    ExlApp.cells(x,y):=StrToDate(RepData)

  else

   ExlApp.cells(x,y):=RepData;

end;{WriteDate}

procedure RepPageBreak(x,y,r:Integer); //X:分页处行数,Y:列数,R:子表头总共的行数

//分页、复制表头

Var

  RepSpace:String;

  n:Integer;

begin

  ExlApp.ActiveSheet.Rows[x].PageBreak := 1;

  RepSpace:=‘A1‘+‘:‘+GetRepRange(r+1,y);

  ExlApp.ActiveSheet.Range[RepSpace].Copy;

  RepSpace:=‘A‘+IntToStr(x);

  ExlApp.ActiveSheet.Range[RepSpace].PasteSpecial;

  ExlApp.Rows[x].RowHeight:=28;

  for n:=2 to r do

    ExlApp.Rows[x+n].RowHeight:=18;

end;{RepPageBreak}

procedure RepSaveAs(FileName:String);

{保存为*.xls文件}

begin

  try

    ExlBook.saveas(FileName);

  except

    MessageDlg(‘不能访问文件,请关闭Microsoft Excel后再运行本程序!‘, mtError, [mbOk], 0);

  end;

end;{RepSaveAs}

procedure RepPrivew(FileName:String);

{预览}

begin

  RepCreat;

  ExlApp.Visible :=True;

  try

    ExlApp.workBooks.Open(FileName);

    ExlApp.Workbooks[1].WorkSheets[1].PrintPreview;

  finally

    ExlApp.Quit;

    ExlApp:=Unassigned;

    //ExlApp:=‘‘;

  end;{try}

end;{RepPrivew}

procedure RepQuit;

{退出Excel}

begin

  ExlBook.Close;

  ExlApp.Quit; //退出Excel Application

  ExlApp:=Unassigned; //释放VARIANT变量

end;{RepQuit}

procedure RepDestroy;

{非正常退出Excel}

begin

  if Not VarIsEmpty(ExlApp) then

  RepQuit;

end;{RepDestroy}

end.

原文地址:https://www.cnblogs.com/jijm123/p/10987871.html

时间: 2024-11-11 04:46:58

Delphi导出Excel的设置操作的相关文章

[转]Delphi导出Excel的设置操作

//设置页边距: ExlApp.ActiveSheet.PageSetup.TopMargin:=1.5/0.035; ExlApp.ActiveSheet.PageSetup.BottomMargin:=1.5/0.035; ExlApp.ActiveSheet.PageSetup.LeftMargin:=1/0.035; ExlApp.ActiveSheet.PageSetup.RightMargin:=1/0.035; ExlApp.ActiveSheet.PageSetup.Header

POI操作EXCEL之导出Excel(设置有效性,下拉列表引用)

本人使用的是poi-bin-3.10-FINAL-20140208.zip 版本的poi以下是程序关键代码: //需要引用的类 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import ja

NPOI导出EXCEL 打印设置分页及打印标题

在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而这个属性默认是true的,怪不得一直设置都不起作用. 设置打印标题用 hssfworkbook.SetRepeatingRowsAndColumns(0, 0, 5, 0, 5); 但最新版本已经有新的方法了. Sheet sheet1 = hssfworkbook.CreateSheet("She

c# 导出Excel文件的操作示例

摘要:Excel的强大和易用,使得大家都喜欢将数据导出为 Excel 备用.传统的ExcelAutoMation技术诸多不足,比如:需要目标机器安装Office.资源消耗较大等:使用NPOI的优势:二进制读写文件.无office依赖性.效率高等.文中详细介绍了NPOI的技术特性,并给出导出Excel的示例代码. Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.websitetable 等多钟格式的文档.正因为Excel的强大和易用,大家都喜欢将数

转:Delphi对Excel的所有操作

学完这个你就成为excel高手了! 一) 使用动态创建的方法 首先创建 Excel 对象,使用ComObj: var ExcelApp: Variant; ExcelApp := CreateOleObject( 'Excel.Application' ); 1) 显示当前窗口: ExcelApp.Visible := True; 2) 更改 Excel 标题栏: ExcelApp.Caption := '应用程序调用 Microsoft Excel'; 3) 添加新工作簿: ExcelApp.

Delphi对Excel复制粘贴操作纠错

本人学一下delphi怎么操作excel表格,正好要用到表格的复制粘贴功能,然后在网上找博客学习,结果找了以后发现基本上博客都是一个抄一个的,这样子我都不说什么了,问题是抄的很多 是错误的,误导了我两天.下面,我针对这些错误纠错一下,我不敢保证我说的对不对.全不全,反正我下面写的代码都是可以运行的. Var wb1 : Variant; wb2 : Variant; vsheet1 , vsheet2: Variant; range1 , range2 : Variant; 打开并显示表格就不多

delphi对于excel的一般操作

资料来自网络单元格设置1.设置单元格线框Excel.ActiveSheet.Range[B10:C13].Borders[N].LineStyle := xlNoneExcel.ActiveSheet.Range[B10:C13].Borders[N].Weight := xlThin 边框的类型 Borders[N]xlEdgeLeft 左=1xlEdgeRight 右=2xlEdgeTop 顶=3xlEdgeBottom 底=4xlDiagonalUp 左上右下=5 xlDiagonalDo

DevExpress导出Excel样式设置

/// <summary> /// 导出到Excel /// </summary> /// <param name="gridControl">GridControl</param> /// <param name="fileNameTitle">导出到Excel的Sheet文件名称</param> public static void ExportToExcel(this GridContro

delphi 导出excel

Var FExcel:OleVariant; //excel应用程序 FWorkBook :OleVariant; //工作表 Temsheet:OleVariant; //工作薄 FPicture:OleVariant;//图片 tmpstr:String; range:variant;//范围 i,j,TemInt:integer; TemFileName:String; real_american_price:Double; begin if (kind = '小米清单') or (kin