我知道这个可以,是属于vba,在对日开发中Delphi控制Excel的经验 :http://hi.baidu.com/yunfanleo/blog/item/65cb0ba8395a45beca130c24.html 有介绍,问题是如果 系统已经有运行的多个excel文件,有间断操作(比如去其他的excel操作了)这个方法找错误文件。我 用delphi的 office控件组,已经可以控制ecxe的文件与sheet的名称,可以进行精确读数据,唯独pagesetup.Orientation ,pagesetup.PaperSize总是0;我用的 Ea1: TExcelApplication; Es1: TExcelWorksheet;----------ea1.Connect;ea1.Workbooks.Open(ed1.Text ,null,null,null,null, null,null,null,null,null,null,null,null,null,null,0);es1.ConnectTo(ea1.Workbooks['my.xls'].Worksheets['设计']as ExcelWorksheet);其他的 es1 都可以读取,with form1.Es1 dobeginmm.txt.text :=Cells.Item[row,col]; // 内容mm.t := Cells.Item[row,col].top; //顶mm.l := cells.Item[row,col].left; //左mm.k:=0;r2:= Cells.Item[row,col].MergeArea.Rows.Count;mm.row2 :=R2;if (o1>=1) and (col>=1) then mm.l:= cells.Item[row,col].left-cells.Item[row,2].left; //左if (o1>=1) and (row>1)and (row>=row2) then mm.t:= cells.Item[row,col].top-cells.Item[row2,1].top; //顶 ms:= cells.Item[row,col].MergeCells; //检查是否为 合并单位if ms thenbeginr2:= Cells.Item[row,col].MergeArea.Rows.Count;c2:= Cells.Item[row,col].MergeArea.Columns.Count;mm.h := Cells.Item[row+r2,col].top-Cells.Item[row,col].top; //高度mm.w := Cells.Item[row,col+c2].left-Cells.Item[row,col].left;//宽度end elsebeginmm.h:= Cells.Item[row,col].height; //高度mm.w:= Cells.Item[row,col].width; //宽度end;if o1=3 thenbeginmm.txt .FontBold := Cells.Item[row,col].font.Bold; //字加粗mm.txt .FontItalic:= Cells.Item[row,col].Font.Italic; //字倾斜mm.txt .thi:=Cells.Item[row,col].HorizontalAlignment; //水平排列mm.txt .tvi:=Cells.Item[row,col].VerticalAlignment; //垂直排列mm.txt.fontname := Cells.Item[row,col].font.name; //字 名称mm.txt.fontSize := Cells.Item[row,col].font.Size; //字 大小mm.txt.fontcolor:= Cells.Item[row,col].font.ColorIndex;//字 颜色if mm.txt.fontcolor<=0 then mm.txt.fontcolor :=1;mm.txt.bcolor:= Cells.Item[row,col].Interior.ColorIndex;// 底颜色 //打印设置中 边距 上下左右p.TopMargin :=PageSetup.topMargin/2.8348;p.BottomMargin :=PageSetup.BottomMargin/2.8348;p.LeftMargin :=PageSetup.LeftMargin/2.8348; p.RightMargin :=PageSetup.RightMargin/2.8348;// 单元格边框//左 1If cells.Item[row,col].Borders[xlEdgeLeft].LineStyle = xlContinuous Then mm.k := 1 ;// 右2If cells.Item[row,col].Borders[xlEdgeRight].LineStyle = xlContinuous Then mm.k := mm.k + 2 ;// 上4If cells.Item[row,col].Borders[xlEdgeTop].LineStyle = xlContinuous Then mm.k := mm.k + 4 ;// '下8If cells.Item[row,col].Borders[xlEdgeBottom].LineStyle = xlContinuous Then mm.k := mm.k + 8 ;end with;唯独读 pagesetup.Orientation ,pagesetup.PaperSize总是0;设置又可以?????