以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何判断EXCEL单元格中是否有内容? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85325) |
||||
-- 作者:wh420 -- 发布时间:2016/5/23 12:11:00 -- 如何判断EXCEL单元格中是否有内容? 如何判断EXCEL单元格中是否有内容?有的单元格明明是空的,但有可能被设置了格式,所以此类单元格不被认为是空,如何实现准确判断?看得见的为非空,看不见的就为空 |
||||
-- 作者:大红袍 -- 发布时间:2016/5/23 12:16:00 -- 什么意思?直接判断 Sheet(0,0).Text 不行? |
||||
-- 作者:wh420 -- 发布时间:2016/5/23 14:09:00 -- SORRY,我没有表述清楚,见如下代码: Dim Book As New XLS.Book("d:\\temp\\2.xlsx") For k As Integer = 0 To Book.Sheets.Count-1 \'//多个sheet的处理 Dim Sheet = Book.Sheets(k) For i As Integer = 0 To Sheet.Rows.Count-1 For j As Integer = 0 To Sheet.Cols.Count -1 If sheet(i,j).text > "" Then Dim dr As DataRow = DataTables("排重表").AddNew dr("第一列") = sheet(i,j).Text End If Next Next Next 见附件EXCEL,
如上代码输出:output.show(Sheet.Rows.Count)值为3行,output.show(Sheet.Cols.Count)值为:16384列(EXCEL在操作时选择了整个表设置了字体,所以默认16384列都被记数了) 而实际上EXCEL表格就3行,1列。如何让循环的终止值只处理有内容的列数,没有内容的列不处理,可以减少循环次数提高效率。 实际应用上表格有内容的行和列不固定,随机的。我只想处理有内容的行和列,空白的列不去处理,如何实现?
[此贴子已经被作者于2016/5/23 14:13:23编辑过]
|
||||
-- 作者:wh420 -- 发布时间:2016/5/23 14:14:00 -- 我想减少循环次数,有多少列实际有内容的就循环到这些列。 |
||||
-- 作者:南望 -- 发布时间:2016/5/23 14:32:00 -- 麻烦老师帮忙看看 |
||||
-- 作者:大红袍 -- 发布时间:2016/5/23 14:51:00 -- 用第一行和第一列确定范围
Dim Book As New XLS.Book("d:\\test.xls")
|
||||
-- 作者:南望 -- 发布时间:2016/5/23 15:05:00 -- 感谢老师,这个思路挺好的, 但我弄到程序里有些问题,目前好像只能提取第一行数据,另外如果碰到有空的列或行是不是程序就跳出循环了? 表格没有规律,有效内容中会有空行,也会有空的列。
|
||||
-- 作者:大红袍 -- 发布时间:2016/5/23 15:09:00 -- 那你就不要全选所有单元格设置字体啊,你操作了多少,最后就会获取多少的啊。 |
||||
-- 作者:南望 -- 发布时间:2016/5/23 15:14:00 -- EXCEL我们没办法控制,都是客户给的,他们为了方便怎样操作的都有。 [此贴子已经被作者于2016/5/23 15:19:49编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2016/5/23 15:20:00 -- 那没办法,你试试用vba
Dim App As New MSExcel.Application |