Foxtable(狐表)用户栏目专家坐堂 → [求助]关于excel报表输出和引用的问题


  共有2280人关注过本帖树形打印复制链接

主题:[求助]关于excel报表输出和引用的问题

帅哥哟,离线,有人找我吗?
沦落深蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
[求助]关于excel报表输出和引用的问题  发帖心情 Post By:2016/9/21 16:14:00 [只看该作者]

老师,情况是这样的,我在设计好窗口和报表后,出现两个问题:

1、报表里的“封面”sheet每次生成文件后都部分丢失,如  c-01机械管理使用情况登记表.xls,所示(对比模板机械管理使用情况登记表.xls)

 

2、在窗口afterload引用时,第三个sheet充电登记表在引用时出现了“不存在名为日期时间的列”这种错误,无法引用(模板生成文件没问题)

  关键是我检查了好多遍,并没有“日期时间”这一列,无中生有??请老师解答,找了快一天也没找到问题图片点击可在新窗口打开查看

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:机械管理使用情况登记表.xls

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:c-01机械管理使用情况登记表.xls


 回到顶部
帅哥哟,离线,有人找我吗?
沦落深蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
  发帖心情 Post By:2016/9/21 16:15:00 [只看该作者]

这个是测试的table

 

 

[此贴子已经被作者于2016/9/21 22:50:26编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110594 积分:562866 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/21 16:36:00 [只看该作者]

1、定义的内容不要包含(占用)Excel表格的A列(第一列)

2、测试没有出现“不存在名为日期时间的列”这种错误。试试把项目下bin目录删除,重启项目

 回到顶部
帅哥哟,离线,有人找我吗?
沦落深蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
  发帖心情 Post By:2016/9/21 21:21:00 [只看该作者]

老师第一个问题解决了,但是第二个依旧不行,以下是弹窗图片及错误信息,测试文件一样的错误,说是afterload里的,我仔细检查也没找出错误在哪里,请老师救我

 
此主题相关图片如下:1.png
按此在新窗口浏览图片

 

 

.NET Framework 版本:2.0.50727.7905
Foxtable 版本:2016.7.29.1
错误所在事件:窗口,新式管理记录窗口,AfterLoad
详细错误信息:
未将对象引用设置到对象的实例。



此主题相关图片如下:2.png
按此在新窗口浏览图片

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110594 积分:562866 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/21 21:26:00 [只看该作者]

窗口,新式管理记录窗口,AfterLoad

自己调试,我这边测试没有问题

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110594 积分:562866 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/21 21:51:00 [只看该作者]

Dim d1 As Date = Date.Today
Dim dh As WinForm.TextBox =e.Form.Controls("TB代号")
Dim fl As String = ProjectPath & "Reports" & "\" & "机械管理记录" & "\" & d1.year & "\" & Tables("机械管理表").Current("装备代号") & "机械管理使用情况登记表.xls"
If FileSys.FileExists(fl)= False Then
    Dim Result As DialogResult
    Result = MessageBox.Show("文件还未生成,是否新建?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        MessageBox.Show("请开始新建文件","提示")
    Else
        Forms("新式管理记录窗口").Close
    End If
End If
Dim  Book As New XLS.Book(fl)
Dim  Sheet As XLS.Sheet = Book.Sheets("作业登记表")
Tables("作业登记表").StopRedraw()
'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As  String = {"日期时间","操作手","作业地点","作业内容","出库时间","入库时间","净作业时间","作业量","批准部门","批准人","备注"}
'注意下面的循环变量从4开始,而不是从0开始,因为Excel表的前6行是标题
For n As Integer = 4 To Sheet.Rows.Count -1
    Dim r As  Row = Tables("作业登记表").AddNew()
    For  m As  Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
    Next
Next
Tables("作业登记表").ResumeRedraw()

Dim  Sheet1 As XLS.Sheet = Book.Sheets("充电登记表")
Tables("充电登记表").StopRedraw()
'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms1() As  String = {"充电情况1","充电情况2","充电情况3","充电情况4","充电情况5","充电情况6","充电情况7","充电情况8","蓄电池电压1","蓄电池电压2","电解液比重1","电解液比重2","充电检查情况1","充电检查情况2","充电检查情况3"}
'注意下面的循环变量从5开始,而不是从0开始,因为Excel表的前5行是标题
For n As Integer = 5 To Sheet1.Rows.Count -1
    Dim r As  Row = Tables("充电登记表").AddNew()
    For  m As  Integer = 0 To nms1.Length - 1
        If Tables("充电登记表").Cols(nms1(m)).IsBoolean Then
            r(nms1(m)) = IIF(Sheet1(n,m).Value=1,True ,False)
        Else
            r(nms1(m)) = Sheet1(n,m).Value
        End If
    Next
Next
Tables("充电登记表").ResumeRedraw()

Dim  Sheet2 As XLS.Sheet = Book.Sheets("维修保养情况登记表")
Tables("维修保养情况登记表").StopRedraw()
'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms2() As  String = {"日期时间","维修保养项目","故障情况1","故障情况2","故障情况3","修理措施","修理结果","修理工","操作手","备注"}
'注意下面的循环变量从5开始,而不是从0开始,因为Excel表的前4行是标题
For n As Integer = 5 To Sheet2.Rows.Count -1
    Dim r As  Row = Tables("维修保养情况登记表").AddNew()
    For  m As  Integer = 0 To nms2.Length - 1
        r(nms2(m)) = Sheet2(n,m).Value
    Next
Next
Tables("维修保养情况登记表").ResumeRedraw()

Dim  Sheet3 As XLS.Sheet = Book.Sheets("检查情况登记表")
Tables("检查情况登记表").StopRedraw()
'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms3() As  String = {"检查时间","检查情况","检查人","审核","备注"}
'注意下面的循环变量从4开始,而不是从0开始,因为Excel表的前4行是标题
For n As Integer = 4 To Sheet3.Rows.Count -1
    Dim r As  Row = Tables("检查情况登记表").AddNew()
    For  m As  Integer = 0 To nms3.Length - 1
        r(nms3(m)) = Sheet3(n,m).Value
    Next
Next
Tables("检查情况登记表").ResumeRedraw()

 回到顶部
帅哥哟,离线,有人找我吗?
沦落深蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:170 积分:1195 威望:0 精华:0 注册:2016/2/21 18:26:00
  发帖心情 Post By:2016/9/21 22:52:00 [只看该作者]

感谢老师~~~~我已经用检查的方法查出问题在哪里了图片点击可在新窗口打开查看~~~~老师辛苦了图片点击可在新窗口打开查看

 回到顶部