intToChar.tcl

 # input a number : 1 to 32 , you will get a char A to Z
#A-Z:1-32
proc intToChar {int} {
if {![string is integer $int]} {
return "Please input a number!"
}
if {![expr 0<$int&&32>$int]} {
return "Input a numer range 1 to 32!"
}
set listChars [list A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]
set intTemp [expr $int-1]
return [lindex $listChars $intTemp]
} #test
#return [intToChar 1] xls_read.tcl
package require tcom
source intToChar.tcl
proc xls_read {fileName} {
if {![file exists $fileName]} {
return {File is not existed!}
}
# set fileName {D:/test.xlsx}
# 创建com实例,打开工作表
set application [::tcom::ref createobject "Excel.Application"]
$application Visible 0
set workbooks [$application Workbooks]
set workbook [$workbooks Open $fileName]
set worksheets [$workbook Worksheets]
#set worksheet [$worksheets Item "Sheet1"]
set worksheet [$worksheets Item [expr 1]]
set cells [$worksheet Cells] set exeFlag 1
#version 1.1
if {1==$exeFlag} {
###result
#set result {}
set rowIndex 1
#used max rows count
set rowUsedCount [[[$worksheet UsedRange] Rows] Count]
puts "Max row is $rowUsedCount!"
#used max columns count
set columnsUsedCount [[[$worksheet UsedRange] Columns] Count]
puts "Max Column is $columnsUsedCount!"
while { $rowIndex <= $rowUsedCount } {
set rowResult {}
set columnIndex 1
while { $columnIndex <= $columnsUsedCount } {
set value [[$cells Item $rowIndex [intToChar $columnIndex]] Value]
# puts $rowNumber+$columnNumber
#show every value
# puts $columnValue
lappend rowResult $value
#next column
incr columnIndex
}
puts $rowResult
###result
#lappend result $rawResult
#read next raw:init orgin vlaue
#next raw
incr rowIndex
}
} #version 1.0
if {-1==$exeFlag} {
###result
#set result {} set rawEnd 0
set columnEnd 0 set rowNumber 1
set columnNumber 1
while { $rawEnd == 0 } {
set rawResult {}
# set columnNumber 1
while { $columnEnd == 0 } {
set columnValue [[$cells Item $rowNumber [intToChar $columnNumber]] Value]
# puts $rowNumber+$columnNumber
#check column isEnd
if { $columnValue == ""} {
set columnEnd 1
continue
}
#show every value
# puts $columnValue
lappend rawResult $columnValue
#next column
incr columnNumber
}
puts $rawResult
###result
#lappend result $rawResult
#read next raw:init orgin vlaue
set columnEnd 0
set columnNumber 1
#next raw
incr rowNumber
#check row isEnd
if {[[$cells Item $rowNumber A] Value] == ""} {
set rawEnd 1
continue
}
}
}
$workbook Close
$application Quit
###result
#return $result
}
set filename {D:/test.xlsx}
#test
return [xls_read $filename]

TCL:读取表格(xls)中的数据的更多相关文章

  1. TCL:表格(xls)中写入数据

    intToChar.tcl # input a number : 1 to 32 , you will get a char A to Z #A-Z:1-32 proc intToChar {int} ...

  2. matlab读取excel文件中的数据

    1.读取sheet1中的所有数据 1.1首先我们建立一个sheet表,表名为‘111’ 1.2 默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤), 选入当前工作 ...

  3. Python笔记(读取txt文件中的数据)

    在机器学习中,常常需要读取txt文本中的数据,这里主要整理了两种读取数据的方式 数据内容 共有四列数据,前三列为特征值,最后一列为数据标签 40920 8.326976 0.953952 3 1448 ...

  4. Python中如何读取xls中的数据

    要想读取EXCEL中的数据,首先得下载xlrd包,地址:https://pypi.python.org/pypi/xlrd  安装方法:下载解压后,利用windows  dos命令进入解压目录eg,c ...

  5. python新建一个表格xls并写入数据

    # -*- coding:utf-8 -*- import xlwt workbook = xlwt.Workbook() # 新建一个工作簿 sheet = workbook.add_sheet(& ...

  6. C#读取Excel表中的数据时,为何有些行的字段内容读取不到

    转载:http://bbs.csdn.net/topics/360220285 1.当某列数据中含有混合类型时,在.NET中使用Microsoft.Jet.OLEDB.4.0来读取Excel文件造成数 ...

  7. JAVA读取TXT文本中的数据

    现在在Demo.txt中存在数据: ABC 需要将ABC从文本文件中读取出来 代码片: import java.io.*; class FileReaderDemo { public static v ...

  8. Newtonsoft.Json读取txt文件中json数据并存到SQL service 数据库!

    using System; using System.Collections.Generic; using System.Text; using System.IO; using Newtonsoft ...

  9. 用python的pandas读取excel文件中的数据

    一.读取Excel文件   使用pandas的read_excel()方法,可通过文件路径直接读取.注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件.并 ...

随机推荐

  1. [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序

    本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...

  2. HDU 1285 确定比赛名次 拓扑排序模板题

    http://acm.hdu.edu.cn/showproblem.php?pid=1285 #include <cstdio> #include <cstdlib> #inc ...

  3. jQuery停止动画——stop()方法的使用

    很多时候需要停止匹配元素正在进行的动画,比如,当鼠标选入元素时显示菜单,鼠标离开时隐藏下拉菜单,如果鼠标移入移出过快的话就会导致动画效果与鼠标的动作不一致的情况,此时stop()就派上用场了. sto ...

  4. ギリギリ eye (优先队列)

    1.题目: [题目描述] A.D.1999,由坠落地球的"谜之战舰"带来的 Over Technology,揭示了人类历史和远 古文明之间的丝丝联系,促使人类终止彼此间的战争,一方 ...

  5. css中一些必要的公共样式

    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend ...

  6. IIS上虚拟目录下站点的web.config与根站点的web.config冲突解决方法

    IIS7.5上在站点下部署虚拟目录,访问虚拟目录下的项目提示与父节点配置冲突.,节点与的<system.web>节点与主站点的<system.web>冲突解决方法: 在站点下的 ...

  7. Winform打砖块游戏制作step by step第6节---双缓冲应用

    一 引子 为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持. 二 本节内容---双缓冲应用 1.  主界面截图如下: 2.  什么是双 ...

  8. ADV-时间分配

    #include<stdio.h> int map[20][4]; typedef struct node{ int star; int end; }node; node dui[100] ...

  9. ibatis 批量插入oracle总结

    1. 使用批量插入最先想到如下的插入语句 insert into a (id,name) values('','') ,('','') 但是 oracle 并不支持这种写法 然后查询得知可以使用如下写 ...

  10. 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)'

    error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Tra ...