2025年tcl语言- 通过tcom调用excel的笔记

tcl语言- 通过tcom调用excel的笔记前言 TCL 果然是偏门语言 插入代码的时候竟然没这个选项 只好选成 py 格式 起码注释能被识别 o 1 CoffeeYao 2 3 package require tcom 4 5 创建顶层类 excel 通过 tcom 打开操作系统的 Excel Application

大家好,我是讯享网,很高兴认识大家。

# 前言:  TCL果然是偏门语言,插入代码的时候竟然没这个选项, 只好选成py格式(起码注释能被识别^o^)


讯享网

 

 1 # CoffeeYao  2  3 package require tcom  4  5 #创建顶层类excel,通过tcom打开操作系统的"Excel.Application"  6 # excel类拥有的方法: (Workbooks) #创建excel类创建子类Workbooks  7 # 动作: <Visibe> #是否可视 <DisplayAlters> #是否显示敏感操作   8 # <Quit> #退出,建议Quit之后再将顶层类设为空集以完全退出"set excel {}",或者用"unset excel"  9 #  10 # 以下代码中创建名为excel的类,再用Visible动作设为可视、DisplayAlerts设为不敏感,  11 # 最后用Workbooks方法创建名为wbs子类。 注意<动作>是对类本身属性的操作,而(方法)则产生一个子类  12 set excel [::tcom::ref createobject "Excel.Application"]  13  14 $excel Visible 1  15 $excel DisplayAlerts 0  16 set wbs [$excel Workbooks]  17  18 #Workbooks型的子类wbs拥有的方法(都将创建Workbook型子类):  19 # (Open) #按路径打开,据目前所知,路径一定得是windows下的绝对路径才行,如当前目录下的ytst0.xls  20 # (Add) #如果Workbooks中已拥有N-1个Workbook型子类,则新建1个名为BookN的  21 # <Count> #统计已拥有的Workbook型子类  22 #Workbook型子类对应的是最直观的xls文件(当然csv文件效果同样),如果想  23 # 对多个xls文件进行操作,就需用相应变量存储起已打开/新建的excel文件  24 # (Worksheets) #创建Worksheets型子类  25 # <SaveAs> #另存为...  26 set wb [$wbs Open [file nativename [file join [pwd] 123.xls]]]  27 set wb2 [$wbs Add] ;#新建一个workbook型子类  28 set wb3 [$wbs Add]  29 $wb SaveAs [file nativename [file join [pwd] test.csv]]  30 $wb2 SaveAs [file nativename [file join [pwd] test2.csv]]  31 $wb3 SaveAs [file nativename [file join [pwd] test3.csv]]  32 set wss [$wb3 Worksheets]  33  34 #Worksheets型的子类wss拥有的方法(都将创建Worksheet型子类):  35 # (Item) #切换定位至某Worksheet子类  36 # (Add) #如果Worksheets中已拥有N-1个Worksheet型子类,则新建1个名为SheetN的  37 # <Count> #统计已拥有的Worksheet型子类  38 #Worksheet型子类对应的是最直观的xls文件中的sheet,它可以被重定位,因此建议是1个全局变量  39 # (Cells) #创建Cells型子类  40 # <Delete>删除 <Name>重命名 <Select>选择占用 <Protect>保护  41 set ws [$wss Item 1]  42 set ws2 [$wss Item 2]  43 set ws3 [$wss Item [$wss Count] ]  44 set ws4 [$wss Add]  45 $ws4 Name newSheet  46 set cells [$ws Cells] ;# sheet1的cells  47  48 #Cells型子类代表的是整个sheet中单元格(统称为cell型子类)  49 # (Range) #范围格式形如"$cells Range A1 C2"  50 # (Item) #Cells或Range内的某个单元格,格式形如"$range Item $row $column"  51 # Range型子类也可以有(Item)方法,甚至Item型的子类也可以继续(Item)  52 # 特别注意Range时候的格式为Y轴+X轴的"y1x1 y2x2" 而Item时的格式为X轴+Y轴的"x y"  53 #  54 #cell型子类(只是个统称,实际上并没有这个子类,Range Item 甚至Cells都可以看作cell型)  55 # (Borders)边框,且Borders有Item型子类border,Borders和Border有<Weight>动作  56 # (Font)字体,Font子类主要有<Bold><Italic><Name><Size>等动作  57 # <Value> #读取值动作  58 # set> #本身没有读值这个动作,这个动作的实现必须由父类实现,如[$cells Item 1 2 setvalue]  59 #更多方法及动作待扩展   60 set range [$cells Range A1 C2]  61 set cellA1 [$cells Item 1 1]  62 set cellA2 [$range Item 2 1]  63 set cellA2A1 [$cellA2 Item 1 1]  64  65 $cells Item 1 1 name ;#x_cell set name   66 [$cells Item 1 1] Value ;#x_cell get  67 $cellA1 Value ;#x_cell get 两者等价  68  69 # VB示例:Worksheets("Sheet1").Range("A1:C5").Font.Bold = True  70 [$cellA1 Font ] Bold 1 ;#x_cell Font-Bold 1  71  72  73  74 [$cellA1 Borders ] Weight 2 ;#x_cell Borders-Weight 2  75 [[$cellA1 Borders ] Item 9 ] Weight 2 ;#x_cell Borders.9-Weight 4  76  77 # set hLinks_1 [[$cellA1 Hyperlinks] Add $cellA1 s3!A20]  78  79 #set => "Item 1 1"  80 #get => "Value"  81 #font-bold =>"Font ] Bold",且前方自动添加"["   82  83 set cells $xInfo(cells) ;# dvEXCEL中的cells变量  84 set cellA1 [$cells Item 1 A]  85 set xInfo(hyperLinks,1) [$xInfo(cells) Hyperlinks]  86 set h3 [$xInfo(hyperLinks,1) Add [$cells Item 1 3] "x1.xls" "a20"]  87 $h3 SubAddress "Sheet2!a20"  88  set hLinkKeys {  89  Address Application Creator EmailSubject Name Parent Range ScreenTip Shape  90  SubAddress TextToDisplay Type  91  }  92  foreach i $hLinkKeys {  93 catch {puts "$i = [$h3 $i]"}  94  }  95 [$cellA1 Hyperlinks] Delete ;# 删除超链接  96  97 proc x_hLink {} {  98 }  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 

讯享网
小讯
上一篇 2025-01-16 15:43
下一篇 2025-02-17 09:26

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/128279.html