Foxtable(狐表)用户栏目专家坐堂 → [求助]导出的EXCEL表的格式问题


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

主题:[求助]导出的EXCEL表的格式问题

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


加好友 发短信
等级:一尾狐 帖子:452 积分:4841 威望:0 精华:0 注册:2015/3/21 14:25:00
[求助]导出的EXCEL表的格式问题  发帖心情 Post By:2025/3/22 15:11:00 [只看该作者]

Dim dt As Table = Tables("凭证")
Dim nms() As String = {"凭证ID", "会计年", "会计期间", "制单日期", "凭证类别", "凭证号", "制单人", "所附单据数", "备注1", "备注2", "科目编码", "摘要", "结算方式编码", "piao据号", "piao据日期", "币种名称", "汇率", "单价", "借方数量", "贷方数量", "原币借方", "原币贷方", "借方金额", "贷方金额", "部门编码", "职员编码", "客户编码", "供应商编码", "项目大类编码", "项目编码", "业务员", "自定义项1", "自定义项2", "自定义项3", "自定义项4", "自定义项5", "自定义项6", "自定义项7", "自定义项8", "自定义项9", "自定义项10", "自定义项11", "自定义项12", "自定义项13", "自定义项14", "自定义项15", "自定义项16", "现金流量项目", "现金流量借方金额", "现金流量贷方金额"} '要导出的列名 
Dim caps() As String = {"凭证ID", "会计年", "会计期间", "制单日期", "凭证类别", "凭证号", "制单人", "所附单据数", "备注1", "备注2", "科目编码", "摘要", "结算方式编码", "piao据号", "piao据日期", "币种名称", "汇率", "单价", "借方数量", "贷方数量", "原币借方", "原币贷方", "借方金额", "贷方金额", "部门编码", "职员编码", "客户编码", "供应商编码", "项目大类编码", "项目编码", "业务员", "自定义项1", "自定义项2", "自定义项3", "自定义项4", "自定义项5", "自定义项6", "自定义项7", "自定义项8", "自定义项9", "自定义项10", "自定义项11", "自定义项12", "自定义项13", "自定义项14", "自定义项15", "自定义项16", "现金流量项目", "现金流量借方金额", "现金流量贷方金额"} '对应的列标题 
Dim szs() As Integer = {130, 170, 140, 140, 140, 140, 140, 0, 0, 0, 140, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 140, 140, 0, 300, 0, 100, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} '对应的列宽 
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" 
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   
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

Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter = "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then   
    Book.Save(dlg.FileName)
    Dim Proc As New Process
    Proc.File = dlg.FileName   
    Proc.Start()
End If

通过以上代码导出的EXECEL表,如何让它的字号为9,
"凭证ID", "会计年", "会计期间", "制单日期", "凭证类别", "凭证号", "制单人"等字段居中
借方金额 和 贷方金额两列导出来是0的,如何让其变为空值
麻烦指导一下。
感谢


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


加好友 发短信
等级:超级版主 帖子:112926 积分:575011 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/3/22 15:40:00 [只看该作者]

1、字体大小到样式处理

Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表 
Dim st As XLS.Style = Book.NewStyle '日期列的显示格式 
st.Format = "yyyy-MM-dd" 
st.font = New Font("宋体",9)
Dim st2 As XLS.Style = Book.NewStyle '日期列的显示格式 
st2.font = New Font("宋体",9)
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 '设置显示格式
else
        Sheet.Cols(c).Style = st2
    End If   
Next

2、空值在赋值的时候判断一下

For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
    For c As Integer = 0 To nms.length - 1
if nms(c) = "借方金额" orelse nms(c) = "贷方金额"
if dt.rows(r)(nms(c)) <> 0 then
 Sheet(r + 1, c).Value = dt.rows(r)(nms(c))
end if
else
        Sheet(r + 1, c).Value = dt.rows(r)(nms(c))
end if
    Next
Next

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


加好友 发短信
等级:一尾狐 帖子:452 积分:4841 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2025/3/22 16:30:00 [只看该作者]

这样写的话其他列都是字号9,但日期列还是原来的字号。我想实现全表9字号
还有居中怎么办呢

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


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

我测试没有问题,注意2楼代码有给日期设置字体的,你漏了吧

居中等其它样式设置看帮助

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


 回到顶部