以文本方式查看主题 - 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=119767) |
||||
-- 作者:wh123 -- 发布时间:2018/5/31 16:12:00 -- EXCEL问题 我模版文件中有固定的格式和边框,导出时部分列需动态变化,然后设置其边框和打印区域,现在如果我导出的列过多,比模版文件中用框圈住的列多是就会报错,请问这是什么原因? |
||||
-- 作者:有点甜 -- 发布时间:2018/5/31 16:22:00 -- 报什么错?
做一个对应的例子发上来测试。 [此贴子已经被作者于2018/5/31 16:22:16编辑过]
|
||||
-- 作者:wh123 -- 发布时间:2018/5/31 16:31:00 -- \'写入工资明细 Dim fnt As new Font(sheet(7,4).Style.Font.Name,sheet(7,4).Style.Font.Size,FontStyle.Regular) \'设置内容字体 Dim fnt1 As new font(sheet(30,4).Style.Font.Name,6,FontStyle.Regular) \'设置备注字体 Dim fnt2 As new Font(sheet(7,4).Style.Font.Name,sheet(7,4).Style.Font.Size,FontStyle.bold) \'设置月份字体加粗加黑效果 For i As Integer = 0 To Tables("工资核算_table5").Rows.Count-1 Dim r5 As Row = Tables("工资核算_table5").Rows(i) sheet(7,4+3*i).Style.Font = fnt2 sheet(7,4+3*i).value = r5("月份") & "月" sheet(8,4+3*i).value = r5("实际出勤天数") sheet.MergeCell(8,4+3*i,1,3) sheet(8,4+3*i).Style.Font = fnt sheet(9,4+3*i).value = r5("基本工资") sheet.MergeCell(9,4+3*i,1,3) sheet(9,4+3*i).Style.Font = fnt sheet(10,4+3*i).value = r5("岗位津贴") sheet.MergeCell(10,4+3*i,1,3) sheet(10,4+3*i).Style.Font = fnt sheet(11,4+3*i).value = r5("涉密津贴") sheet.MergeCell(11,4+3*i,1,3) sheet(11,4+3*i).Style.Font = fnt sheet(12,4+3*i).value = r5("年工资") sheet.MergeCell(12,4+3*i,1,3) sheet(12,4+3*i).Style.Font = fnt sheet(13,4+3*i).value = r5("全勤奖") sheet.MergeCell(13,4+3*i,1,3) sheet(13,4+3*i).Style.Font = fnt sheet(16,4+3*i).value = r5("补款项目_加班费") sheet.MergeCell(16,4+3*i,1,3) sheet(16,4+3*i).Style.Font = fnt sheet(17,4+3*i).value = r5("补款项目_电脑") sheet.MergeCell(17,4+3*i,1,3) sheet(17,4+3*i).Style.Font = fnt sheet(18,4+3*i).value = r5("补款项目_其他津贴补贴") sheet.MergeCell(18,4+3*i,1,3) sheet(18,4+3*i).Style.Font = fnt sheet(19,4+3*i).value = r5("补款项目_职称津贴") sheet.MergeCell(19,4+3*i,1,3) sheet(19,4+3*i).Style.Font = fnt sheet(20,4+3*i).value = r5("补款项目_过节费") sheet.MergeCell(20,4+3*i,1,3) sheet(20,4+3*i).Style.Font = fnt sheet(21,4+3*i).value = r5("补款项目_其他") sheet.MergeCell(21,4+3*i,1,3) sheet(21,4+3*i).Style.Font = fnt sheet.MergeCell(22,4+3*i,1,3) \'离职补偿 sheet(22,4+3*i).Style.Font = fnt sheet.MergeCell(23,4+3*i,1,3) sheet(23,4+3*i).value = r5("扣款项目_社保") sheet(23,4+3*i).Style.Font = fnt sheet.MergeCell(24,4+3*i,1,3) sheet(24,4+3*i).value = r5("扣款项目_住房公积金") sheet(24,4+3*i).Style.Font = fnt sheet.MergeCell(25,4+3*i,1,3) sheet(25,4+3*i).value = r5("扣款项目_缺勤扣款") sheet(25,4+3*i).Style.Font = fnt sheet.MergeCell(26,4+3*i,1,3) sheet(26,4+3*i).value = r5("扣款项目_迟到扣款") sheet(26,4+3*i).Style.Font = fnt sheet.MergeCell(27,4+3*i,1,3) sheet(27,4+3*i).value = r5("扣款项目_其他") sheet(27,4+3*i).Style.Font = fnt sheet.MergeCell(28,4+3*i,1,3) sheet(28,4+3*i).value = r5("个人所得税") sheet(28,4+3*i).Style.Font = fnt sheet.MergeCell(29,4+3*i,1,3) sheet(29,4+3*i).value = r5("税后实发工资") sheet(29,4+3*i).Style.Font = fnt sheet.MergeCell(30,4+3*i,1,3) sheet(30,4+3*i).value = r5("备注") sheet(30,4+3*i).Style.Font = fnt1 \'备注字体与前面不一样 sheet(30,4+3*i).Style.WordWrap = True \'设置备注自动换行 \'加班时间 sheet(14,4+3*i).value = "1.5倍" sheet(14,4+3*i+1).value = "2倍" sheet(14,4+3*i+2).value = "3倍" sheet(15,4+3*i).value = r5("加班时间_一点五倍") sheet(15,4+3*i).Style.Font = fnt sheet(15,4+3*i+1).value = r5("加班时间_两倍") sheet(15,4+3*i+1).Style.Font = fnt sheet(15,4+3*i+2).value = r5("加班时间_三倍") sheet(15,4+3*i+2).Style.Font = fnt Next |
||||
-- 作者:wh123 -- 发布时间:2018/5/31 16:31:00 --
|
||||
-- 作者:wh123 -- 发布时间:2018/5/31 16:34:00 -- 这是模版文件和动态变化的部分代码,报错未将对象的引用设置到对象的实例,三个月以内的工资明细就可以,三个月以上就报错 |
||||
-- 作者:wh123 -- 发布时间:2018/5/31 16:35:00 -- 还有我设置的其他字体都生效了但是加租的效果就是出不来 |
||||
-- 作者:wh123 -- 发布时间:2018/5/31 16:39:00 -- 我测试过三个月以上数据前三次循环都可以执行,到第四次循环就会报错 |
||||
-- 作者:有点甜 -- 发布时间:2018/5/31 16:46:00 -- sheet(7,4+3*i).Style.Font = fnt2
这种代码修改一下,循环之前new出来
Dim Style As XLS.Style = Book.NewStyle() \'定义新样式 style.font = fnt2
在循环里面,直接赋值
sheet(7,4+3*i).Style = style |