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. Android中的事件传递机制

    Android源码版本:API Level 19(Android 4.4) Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点按又包括单击和双击,另外还包括单指操作和 ...

  2. 手机页面touch触摸事件

    请看示例: <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset=" ...

  3. LeetCode OJ 106. Construct Binary Tree from Inorder and Postorder Traversal

    Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  4. [原创]AD9212采样方法

    随记 最近由于工程原因用到ADC的采样,选用了ADI公司的AD9212芯片,八通道10位ADC.在进行ADC的采样时,看到的想到的几种方法,在这里做个笔记记录一下. AD9212简介 详细说明可以在A ...

  5. [转载]Matlab之静态文本多行输出

    转载文章,原文链接:Matlab中的静态文本框中显示多行内容 有时候,我们在GUI中利用静态文本框显示程序的结果,但是结果很长,一行未必可以显示的开,而静态文本框不像edit或listbox那样通过滚 ...

  6. 使用ajax实现无刷新改变页面内容

    如何使用ajax实现无刷新改变页面内容(也就是ajax异步请求刷新页面),下面通过一个小demo说明一下,前端页面代码如下所示 1 <%@ Page Language="C#" ...

  7. 关于yii2框架活动记录activeRecord添加默认字段的问题

    平时使用sql的时候可以如下添加默认字段flag: "select a.*,0 as flag from user_info a", 对于yii2框架则需要这样: $query = ...

  8. iOS代码实现九宫格

    #define ScreenW [UIScreen mainScreen].bounds.size.width #define ScreenH [UIScreen mainScreen].bounds ...

  9. 去除inline-block元素间间距,比较靠谱的两种办法

    1.使用注释符号 <div><span class="1">1</span></div><!-- --><div& ...

  10. SQL Server 查询所有外键子父表关系

    SELECT table_name,fk_name,reference_table_name,fk_list_number,fk_detailFROM (SELECT object_name(f.ob ...