怎样用DELPHI控制EXCEL中某一单元格的某一边框是不是显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用DELPHI控制EXCEL中某一单元格的某一边框是不是显示相关的知识,希望对你有一定的参考价值。

参考技术A 这是我利用excel中的宏编辑的数据倒入excel中的一个例子,希望有帮助。
procedure TForm_ejjgs.BitBtn8Click(Sender: TObject);
var
excel,workbook:variant;
xlsfilename:string;
i,j:integer;
begin try
excel:=createoleobject('excel.application');
workbook:=createoleobject('excel.sheet'); except
showmessage('您的机器里未安装Microsoft excel');
end;
try
excel:=createoleobject('excel.application');
excel.workbooks.open('c:\gcsgl\demo.xls');
xlsfilename:='demo.xls';
excel.worksheets[4].activate;
//ClearContents
excel.activeSheet.Name:= '二级注册结构师';
//给单元格赋值。
Data.ADOQuery_gcsgl.First;
j:=data.adoquery_gcsgl.recordcount;
//['a2:h'+InttoStr(j+2)].ClearContents;
excel.activesheet.range['a2:h1000'].ClearContents;
for i:=1 to Data.ADOQuery_gcsgl.RecordCount do
begin
excel.Cells(i+2,1):=Data.ADOQuery_gcsgl.FieldByName('序号').asstring;
excel.Cells(i+2,2):=Data.ADOQuery_gcsgl.FieldByName('姓名').asstring;
excel.Cells(i+2,3):=Data.ADOQuery_gcsgl.FieldByName('注册单位').asstring;
excel.Cells(i+2,4):=trim(Data.ADOQuery_gcsgl.FieldByName('身份证号').asstring);
excel.Cells(i+2,5):=Data.ADOQuery_gcsgl.FieldByName('执业印章号').asstring;
excel.Cells(i+2,6):=Data.ADOQuery_gcsgl.FieldByName('注册证书号').asstring;
excel.Cells(i+2,7):=Data.ADOQuery_gcsgl.FieldByName('截止日期').asstring;
excel.Cells(i+2,8):=Data.ADOQuery_gcsgl.FieldByName('备注').asstring;
excel.activesheet.rows[i+2].rowheight:=20;
Data.ADOQuery_gcsgl.MoveBy(1);
end;
//格式
excel.activesheet.range['a1:h1'].font.FontStyle:='粗体';
excel.activesheet.range['a1:h1'].HorizontalAlignment := xlCenter;
excel.activesheet.range['a1:h1'].VerticalAlignment:= xlCenter;
excel.activesheet.range['a1:h1'].ReadingOrder := xlContext;
excel.activesheet.range['a1:h1'].MergeCells := True;
excel.activesheet.range['a2:h2'].font.FontStyle:='粗体';
excel.cells[1,1].value:='甘 肃 省 二 级 注 册 结 构 师 名 单';
excel.ActiveSheet.PageSetup.TopMargin :=2.8/0.035;
//列宽
excel.activesheet.columns[1].columnwidth:=6;
excel.activesheet.columns[2].columnwidth:=6;
excel.activesheet.columns[3].columnwidth:=30;
excel.activesheet.columns[4].columnwidth:=20;
excel.activesheet.columns[5].columnwidth:=15;
excel.activesheet.columns[6].columnwidth:=15;
excel.activesheet.columns[7].columnwidth:=10;
excel.activesheet.columns[8].columnwidth:=20;
excel.cells[2,1].value:='序号';
excel.cells[2,2].value:='姓名';
excel.cells[2,3].value:='注册单位';
excel.cells[2,4].value:='身份证号';
excel.cells[2,5].value:='执业印章号';
excel.cells[2,6].value:='注册证书号';
excel.cells[2,7].value:='截止日期';
excel.cells[2,8].value:='备 注';
//设置边框
excel.activesheet.range['a2:h'+InttoStr(j+2)].borders[1].weight:=2;
excel.activesheet.range['a2:h'+InttoStr(j+2)].borders[2].weight:=2;
excel.activesheet.range['a2:h'+InttoStr(j+2)].borders[3].weight:=2;
excel.activesheet.range['a2:h'+InttoStr(j+2)].borders[4].weight:=2;
//对齐方式 ExlApp.Selection.HorizontalAlignment:=3;
excel.activesheet.columns[1].HorizontalAlignment:=3;
excel.activesheet.columns[2].HorizontalAlignment:=3;
excel.activesheet.columns[4].HorizontalAlignment:=3;
excel.activesheet.columns[5].HorizontalAlignment:=3;
excel.activesheet.columns[6].HorizontalAlignment:=3;
excel.activesheet.columns[7].HorizontalAlignment:=3;
excel.activesheet.columns[8].HorizontalAlignment:=3;
excel.activesheet.columns[2].verticalAlignment:=2;
excel.activesheet.columns[1].verticalAlignment:=2;
//设置自动换行
excel.activesheet.columns[8].WrapText:=false;
excel.activesheet.columns[8].ShrinkToFit:=true;
excel.activesheet.columns[8].ReadingOrder :=xlContext;
//设置页边距
excel.activesheet.pagesetup.topMargin:=2/0.035;
excel.activesheet.pagesetup.headerMargin:=1.8/0.035;
excel.activesheet.pagesetup.leftMargin:=1.5/0.035;
excel.activesheet.pagesetup.rightMargin:=1/0.035;
excel.activesheet.pagesetup.bottomMargin:=2/0.035;
//设置文本属性。
excel.activesheet.Columns['d:d'].NumberFormatLocal:='0';
excel.activesheet.Columns['e:e'].NumberFormatLocal:='0';
excel.activesheet.Columns['f:f'].NumberFormatLocal:='0';
excel.activesheet.Columns['g:g'].NumberFormatLocal:='0';
excel.activesheet.Columns['e:e'].NumberFormatLocal:='0';
//excel.ActiveSheet.PageSetup.PrintArea :='';
excel.ActiveSheet.PageSetup.Orientation:=xlLandscape; //横向打印 except
exit;
end;
//保存为excel
excel.displayalerts:=false;
excel.activeworkbook.saveas('c:\gcsgl\demo.xls');
excel.workbooks.close;
excel.quit;
showmessage('已保存完毕!')
end;

如何将excel电子表格中带有多个连字符“-”的中的某一数字用公式提取出来,数据量比较大,一个一个的输入很

如何将excel电子表格中带有多个连字符“-”的中的某一数字用公式提取出来,数据量比较大,一个一个的输入很麻烦,请教各位高手了,谢谢!如下
A1单元格:10-2A-1167-13EONAD-SIN
A2单元格:3-7-1168-1EONAD-OUT
。。。。。。
An单元格
现在我要提取中间的数字1167、1168.。。。。。到B1、B2.。。。。。。Bn单元格

输入以下公式,然后向下填充公式

=--TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",100)),200,100))

详见附图示例

参考技术A 格式相同就容易解决,而且都是提取4位数
在B1中输入公式,然后下拉填充
=MID(A1,FIND("@",SUBSTITUTE(A1,"-","@",2))+1,4)

如果提取的位数不确定,可以用下面有公式
=MID(A1,FIND("@",SUBSTITUTE(A1,"-","@",2))+1,FIND("@",SUBSTITUTE(A1,"-","@",3))-FIND("@",SUBSTITUTE(A1,"-","@",2))-1)追问

前面的连字符个数是一样多的,但提取的位数可能不同,提取值的前面连字符之间的数字个数也不同

追答

那你使用下面的这个公式就OK了

参考技术B 将A列数据复制到末尾列,对复制的列采用“-”进行分裂,然后讲你需要的数据复制到B列,删除辅助列内容 MEIFEGHDPIG 的回答非常专业,我提供一个业余的方法本回答被提问者采纳 参考技术C 试了一下,MEIFEGHDPIG的方法能实现 参考技术D ……

以上是关于怎样用DELPHI控制EXCEL中某一单元格的某一边框是不是显示的主要内容,如果未能解决你的问题,请参考以下文章

Delphi中点击DBGrid中某一单元格时,后面出现个按钮可以点进去,出现一个新窗体,进行选择。

如何在Excel VBA 中的某一列查找某一单元格,并获得此单元格的行号?

怎样隐藏DataTable中的某一列

java代码中怎样给导出的excel表中某一列加超链接样式

JTable里怎么得到修改后单元格里的值

excel 设置 单元格的值为可选值,可选值设置为某一列。