以文本方式查看主题

-  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=69108)

--  作者:youkacard
--  发布时间:2015/5/30 15:16:00
--  Excel报表返回列数不正确
Dim Open As New OpenFileDialog
Open.Title = "导入数据表格"
Open.Filter = "97-2003 Excel文件|*.xls|Excel工作簿|*.xlsx"
If Open.ShowDialog = DialogResult.OK Then
    Dim Book As New XLS.Book(Open.FileName) \'定义一个报表
    Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用第一个表
    Dim r As Integer = Sheet.Rows.Count \'返回总行数
    Dim c As Integer = Sheet.Cols.Count \'返回总列数
    MessageBox.Show(r & "|" & c)
End If

我有个表格文件,其中97-2003和2007格式的,返回列数都不一样,都不正确,是我代码有问题吗?

--  作者:youkacard
--  发布时间:2015/5/30 15:18:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150530151710.jpg
图片点击可在新窗口打开查看
行数正确,列数不对,没有那么多列的
[此贴子已经被作者于2015/5/30 15:17:49编辑过]

--  作者:Bin
--  发布时间:2015/5/30 15:20:00
--  
选择右边空白的列.然后删除.就好了.
--  作者:youkacard
--  发布时间:2015/5/30 15:23:00
--  
版主,我删除了还是显示256列,空白的也算?
[此贴子已经被作者于2015/5/30 15:23:03编辑过]

--  作者:Bin
--  发布时间:2015/5/30 15:25:00
--  
有些特殊的操作,或者某些软件导出的表格,是会增加大量的空白列的.

一般来说手动删除没问题就是这个原因了

你可以用代码排除,IF判断一下列名是否为空,或者列内容是否为空.是空就 Exit FOR 退出循环就好了

--  作者:youkacard
--  发布时间:2015/5/30 16:19:00
--  
为什么我获取单元格内容老是提示 字符串“” 无法转为 integer 我都用了Cint转换了  并且单元格内容确实是纯数字
--  作者:Bin
--  发布时间:2015/5/30 16:24:00
--  
你有空值的情况

空值是Cint不了的.
 
判断一下. IF XX<>"" then   判断一下不是空值再执行转换和赋值代码