以文本方式查看主题 - 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=196010) |
-- 作者:HANZHIGANG -- 发布时间:2025/3/22 15:11:00 -- [求助]导出的EXCEL表的格式问题 Dim dt As Table = Tables("凭证") Dim nms() As String = {"凭证ID", "会计年", "会计期间", "制单日期", "凭证类别", "凭证号", "制单人", "所附单据数", "备注1", "备注2", "科目编码", "摘要", "结算方式编码", "票据号", "票据日期", "币种名称", "汇率", "单价", "借方数量", "贷方数量", "原币借方", "原币贷方", "借方金额", "贷方金额", "部门编码", "职员编码", "客户编码", "供应商编码", "项目大类编码", "项目编码", "业务员", "自定义项1", "自定义项2", "自定义项3", "自定义项4", "自定义项5", "自定义项6", "自定义项7", "自定义项8", "自定义项9", "自定义项10", "自定义项11", "自定义项12",
"自定义项13", "自定义项14", "自定义项15", "自定义项16", "现金流量项目",
"现金流量借方金额",
"现金流量贷方金额"} \'要导出的列名 Dim caps() As String = {"凭证ID", "会计年", "会计期间", "制单日期", "凭证类别", "凭证号", "制单人", "所附单据数", "备注1", "备注2", "科目编码", "摘要", "结算方式编码", "票据号", "票据日期", "币种名称", "汇率", "单价", "借方数量", "贷方数量", "原币借方", "原币贷方", "借方金额", "贷方金额", "部门编码", "职员编码", "客户编码", "供应商编码", "项目大类编码", "项目编码", "业务员", "自定义项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的,如何让其变为空值 麻烦指导一下。 感谢 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2025/3/22 16:30:00 -- 这样写的话其他列都是字号9,但日期列还是原来的字号。我想实现全表9字号 还有居中怎么办呢
|
-- 作者:有点蓝 -- 发布时间:2025/3/22 16:57:00 -- 我测试没有问题,注意2楼代码有给日期设置字体的,你漏了吧 居中等其它样式设置看帮助
|