以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 统计表导成excel控制小数点后两位,提示错误 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173565) |
-- 作者:guosheng -- 发布时间:2021/12/6 10:12:00 -- 统计表导成excel控制小数点后两位,提示错误 Dim nms(10000) As String Dim caps(10000) As String Dim szs(10000) As Integer For i As Integer = 0 To Tables("统计表2").Cols.Count - 1 nms(i) = Tables("统计表2").Cols(i).name caps(i) =Tables("统计表2").Cols(i).caption szs(i) = 100 Next Dim dt As Table=Tables("统计表2") Dim Book As New XLS.Book \'定义一个Excel工作簿 Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表 Dim st As XLS.Style = Book.NewStyle \'日期列的显示格式 st.Format = "yyyy-MM-dd" Dim nt As XLS.Style = Book.NewStyle \'日期列的显示格式 nt.Format = "0.00" For c As Integer = 0 To nms.length -1 Sheet(0, c).Value = caps(c) \'指定列标题 Sheet.Cols(c).Width = szs(c) \'指定列宽 If dt.Cols(nms(c)).IsDate Then \'如果是日期列 Sheet.Cols(c).Style = st \'设置显示格式 End If If dt.Cols(nms(c)).IsNumeric Sheet.Cols(c).Style = nt \'设置显示格式 End If Next For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据 For c As Integer = 0 To nms.length -1 If dt.rows(r).IsNull(nms(c)) = False If dt.Cols(nms(c)).IsNumeric Sheet(r +1, c).Value = round2(dt.rows(r)(nms(c)),2) End If End If Next Next |
-- 作者:有点蓝 -- 发布时间:2021/12/6 10:22:00 -- 关闭退出项目,删除项目所在的文件夹里的bin目录,然后重启项目试试。 调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错
|
-- 作者:guosheng -- 发布时间:2021/12/6 10:52:00 -- For c As Integer = 0 To nms.length -1 Sheet(0, c).Value = caps(c) \'指定列标题 Sheet.Cols(c).Width = szs(c) \'指定列宽 \'If dt.Cols(nms(c)).IsDate Then \'如果是日期列 \'Sheet.Cols(c).Style = st \'设置显示格式 \'End If \'If dt.Cols(nms(c)).IsNumeric \'Sheet.Cols(c).Style = nt \'设置显示格式 \'End If Next
|
-- 作者:guosheng -- 发布时间:2021/12/6 15:23:00 -- 生成excel表头时提示 超出最大列数 256,什么意思啊? |
-- 作者:有点蓝 -- 发布时间:2021/12/6 15:25:00 -- 定义的数组长度是10000也,Dim nms(10000) As String For c As Integer = 0 To nms.length -1 -- 也就是nms.length -1= 9999
|
-- 作者:有点蓝 -- 发布时间:2021/12/6 15:26:00 -- 改为 Dim nms(Tables("统计表2").Cols.Count - 1) As String
|
-- 作者:guosheng -- 发布时间:2021/12/6 16:25:00 -- 用代码填充导出的excel的表头都是单层的:2021年4月_指标1 2021年4月_指标2 2021年4月_指标3 如何改成多层表头啊?显示为: 2021年4月 指标1 指标2 指标3
[此贴子已经被作者于2021/12/6 16:25:30编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/12/6 17:00:00 -- 这个比较麻烦,根据下划线拆分,然后分别填入上下2行的单元格,判断刚刚填入的第一行的单元格如果和左边的单元格内容一样就合并:http://www.foxtable.com/webhelp/topics/1153.htm |
-- 作者:guosheng -- 发布时间:2021/12/6 17:13:00 -- 是在表头生成的时候做判断,才能使表头由一层变成两层啊?excel的代码操作不太会啊,多谢了 Dim dt As Table=Tables("统计表2") Dim nms(dt.Cols.Count -1) As String \'列名称 Dim caps(dt.Cols.Count-1) As String \'列标题 Dim szs(dt.Cols.Count-1) As Integer For i As Integer = 0 To Tables("统计表2").Cols.Count - 1 nms(i) = Tables("统计表2").Cols(i).name caps(i) =Tables("统计表2").Cols(i).caption szs(i) = 100 Next For c As Integer = 0 To nms.length -1 Sheet(0, c).Value = caps(c) \'指定列标题 Sheet.Cols(c).Width = szs(c) \'指定列宽 If ********** 这里加个什么判断进行表头处理啊? End If Next |
-- 作者:有点蓝 -- 发布时间:2021/12/6 17:38:00 -- For c As Integer = 0 To nms.length -1 dim ar() as string = caps(c) .split("_") Sheet(0, c).Value = ar(0) \'指定列标题 if ar.length = 2 then Sheet(1, c).Value = ar(1) end if Sheet.Cols(c).Width = szs(c) \'指定列宽 If ********** 这里加个什么判断进行表头处理啊? End If Next
|