以文本方式查看主题 - 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=90783) |
||||||||
-- 作者:沦落深蓝 -- 发布时间:2016/9/21 16:14:00 -- [求助]关于excel报表输出和引用的问题 老师,情况是这样的,我在设计好窗口和报表后,出现两个问题: 1、报表里的“封面”sheet每次生成文件后都部分丢失,如 c-01机械管理使用情况登记表.xls,所示(对比模板机械管理使用情况登记表.xls)
2、在窗口afterload引用时,第三个sheet充电登记表在引用时出现了“不存在名为日期时间的列”这种错误,无法引用(模板生成文件没问题) 关键是我检查了好多遍,并没有“日期时间”这一列,无中生有??请老师解答,找了快一天也没找到问题
|
||||||||
-- 作者:沦落深蓝 -- 发布时间:2016/9/21 16:15:00 -- 这个是测试的table
[此贴子已经被作者于2016/9/21 22:50:26编辑过]
|
||||||||
-- 作者:有点蓝 -- 发布时间:2016/9/21 16:36:00 -- 1、定义的内容不要包含(占用)Excel表格的A列(第一列) 2、测试没有出现“不存在名为日期时间的列”这种错误。试试把项目下bin目录删除,重启项目
|
||||||||
-- 作者:沦落深蓝 -- 发布时间:2016/9/21 21:21:00 -- 老师第一个问题解决了,但是第二个依旧不行,以下是弹窗图片及错误信息,测试文件一样的错误,说是afterload里的,我仔细检查也没找出错误在哪里,请老师救我
.NET Framework 版本:2.0.50727.7905 此主题相关图片如下:2.png |
||||||||
-- 作者:有点蓝 -- 发布时间:2016/9/21 21:26:00 -- 窗口,新式管理记录窗口,AfterLoad 自己调试,我这边测试没有问题
|
||||||||
-- 作者:有点蓝 -- 发布时间: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()
|
||||||||
-- 作者:沦落深蓝 -- 发布时间:2016/9/21 22:52:00 -- 感谢老师~~~~我已经用检查的方法查出问题在哪里了~~~~老师辛苦了 |