看似简单的问题:怎么得到EXCEL的列宽——注意:不是设置。(50分)

D

ddntyz

Unregistered / Unconfirmed
GUEST, unregistred user!
看似简单的问题:怎么得到EXCEL的列宽——注意:不是设置。

我是这样做的。
V:=CreateOleObject('Excel.Application');
方法一:
Test1 :=V.WorkSheets[1].UsedRange.ColumnWidth; //使用了的所有列的宽

方法二:
Test1 :=V.WorkSheets[1].Columns['A : A'].ColumnsWidth;
或者:
Test1 :=V.WorkSheets[1].Columns[1].ColumnsWidth;

方法三:
V.WorkSheets[1].Columns[1].Select;
Test1 :=V.Selection.ColumnWidth ;

都不行,返回值为0;

请教高手。
 
EA:=CreateOleObject('Excel.Application');
Sheet:= EA.Workbooks[1].WorkSheets[1];
Row:= Sheet.UsedRange.Rows.Count;
column:=Sheet.UsedRange.columns.Count;
 
或者
Test1:=V.ActiveSheet.UsedRange.Columns.count;
 
方法二设置列宽肯定是可以的,读取也应该可以啊
 
a:=createoleobject('excel.application');
a.workbooks.add;
a.activecell.columnwidth:=10;
showmessage(inttostr(a.activecell.columnwidth));
 
To 大致若鱼:
你做的是得到行数,列数,不是每一列的列宽。

TO wangxd
这种方法TEST1的返回值是0,得不到列宽。

TO zm30
我试试你说的。我还有一个问题。
当用鼠标指向EXCEL表的最上面的列名时,有一个提示,该列的宽度。它是一个磅值,括号里
的是象素值,怎么可以直接得到括号里的象素值呢。

谢谢各位的回复。

 
不行。D5总是提示:
Value assigned to 'Test1'never used

这是怎么一回事呀
 
这不是错误,是DELPHI的编译提示,说这个变量从未使用
 
报告一个好消息。问题已经解决了。
问题出在“TEST1”上面。它应该是“VARIANT”类型的。

不过,还是不能直接的到括号里的象素值。我不想用换算。那样不准确。
希望各位大侠能不吝赐教。
 
返回的应该是字符数吧!
 
得到EXCEL的列宽:
procedure TForm1.Button1Click(Sender: TObject);
var
MSExcel, WorkBook,WorkSheet: Variant;
d:real;
begin
try
MSExcel := CreateOleObject('Excel.Application');
WorkBook := MSExcel.WorkBooks.Add;
WorkSheet := MSExcel.WorkSheets.Add;
MSExcel.visible := true;
except
ShowMessage('无法与Microsoft Excel连接!');
abort;
end;
MSExcel.workbooks[1].sheets[1].Columns[1].ColumnWidth := 6.88;//为了测试而设置
d:=MSExcel.workbooks[1].sheets[1].Columns[1].ColumnWidth;
showmessage(floatToStr(d));
WorkBook .save;
WorkBook .close;
MSExcel.Quit;
MSExcel := unassigned;
end;
 
to
linsb
你这样是否得到的是象素值呢。得到它的磅值,我已经实现了。但是我现在是用换算得到的
象素值,不准确,你有办法直接得到它的象素值吗?
 
在delphi中只能得到磅值,设置时也是磅值,如给定的是厘米或象素值要换算,实际上也没什么
大不了的,不会对结果有大影响。
 
我看到,当用鼠标左键按住EXCEL中的表格线时(控制调整列宽的地方),出现了当前该列的列
宽,一个是磅值,但是括号里是象素值,我以为可一有办法的到括号里的象素值的。
 
wbook.columns['A'].columnwidth
 
多人接受答案了。
 
顶部