Foxtable(狐表)用户栏目专家坐堂 → table的数值列,已经设置成小数点2位了,为什么导出的excel还是保留了4位啊?


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

主题:table的数值列,已经设置成小数点2位了,为什么导出的excel还是保留了4位啊?

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
table的数值列,已经设置成小数点2位了,为什么导出的excel还是保留了4位啊?  发帖心情 Post By:2019/9/5 16:27:00 [只看该作者]

金额列 设置成 小数点后边2位。
即使加了绿色阴影的部分,导出来的 金额列 依然保留了4位小数,怎么回事啊?

Tables("租赁合同佣金提取明细表").DataTable.DataCols("申请金额").SetFormat("0.00")
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
     Tables("租赁合同佣金提取明细表").SaveExcel(dlg.FileName,"明细表11")  '保存文件
        Dim Proc As New Process
        Proc.File = dlg.FileName
        Proc.Start()
End If


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看


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


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

设置为2位只是单元格不显示多余的位数而已,并不会改变数据库原有的数据

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/5 16:42:00 [只看该作者]

如何让导出来的excel数值列也显示小数点后两位啊?
加上下边这个样式,导出来的数值列还是显示小数点后4位。

Dim flg As New SaveExcelFlags
flg
.CellStyle = True

[此贴子已经被作者于2019/9/5 16:43:25编辑过]

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


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

这个导出用法没有办法控制,除非通过模板导出,或者自己写代码导出:http://www.foxtable.com/webhelp/topics/1148.htm

不然就把数据库里多余的位数都清除掉

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/5 17:05:00 [只看该作者]

    为空的日期列,导出来显示是,
1900-01-00
,该怎么修改判定条件啊?

Dim st As XLS.Style = Book.NewStyle '日期列的显示格式
    st.Format = "yyyy-MM-dd"

    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 And  ****** Then '如果是日期列
            Sheet.Cols(c).Style = st '设置显示格式
        End If
next
    For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
        For c As Integer = 0 To nms.length -1
            Sheet(r +1, c).Value = dt.rows(r)(nms(c))
        Next
    Next
[此贴子已经被作者于2019/9/5 17:07:15编辑过]

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


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

没看懂,要判断什么?

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/5 17:52:00 [只看该作者]

问题已解决了。谢谢         
If dt.rows(r)(nms(c))<>Nothing
            Sheet(r +1, c).Value = dt.rows(r)(nms(c))
End If
[此贴子已经被作者于2019/9/6 8:51:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/6 10:51:00 [只看该作者]

虽然设置了数值类型个格式为“0.00”,只是数值列显示的时候是保留的小数点后2位,excel存储时的还是小数点后边超过2位(见附件),应该怎么改啊(导出的excel实际存储的也是小数点后2位)?

Dim dt As Table = Tables("租赁合同佣金提取明细表")
    Dim nms() As String = {"合同编号","项目名称","楼栋名称","房间名称","客户名称","合同面积","租金总额","管理费总额","合同开始日期","合同终止日期","签订日期","租赁类别","经手人","申请金额","申请笔数","提佣所属年份","提交人","提交日期","审核人","审核日期"} '要导出的列名
    Dim caps() As String = {"合同编号","项目名称","楼栋名称","房间名称","客户名称","合同面积","租金总额","管理费总额","合同开始日期","合同终止日期","签订日期","租赁类别","经手人","申请金额","申请笔数","提佣所属年份","提交人","提交日期","审核人","审核日期"} '对应的列标题
    Dim szs() As Integer = {150,100,100,150,150,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100} '对应的列宽
    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  And dt.Cols(nms(c)).name<> "提佣所属年份" Then '如果是数值列
            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)(nms(c))<>Nothing
            Sheet(r +1, c).Value = dt.rows(r)(nms(c))
End If
        Next


    Next


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看


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


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

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 AndAlso dt.Cols(nms(c)).name <> "提佣所属年份"
                Sheet(r +1, c).Value = format(dt.rows(r)(nms(c)),"#.##")
            Else
                Sheet(r +1, c).Value = dt.rows(r)(nms(c))
            End If
        End If
    Next
    
    
Next

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/6 11:35:00 [只看该作者]

测试了,这样依然是,点击excel单元格进去,实际保留的还是小数点后3位啊

 回到顶部
总数 24 1 2 3 下一页