以文本方式查看主题 - 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=153375) |
||||||
-- 作者:裴保民 -- 发布时间:2020/8/9 18:02:00 -- 关于导出Excel问题 导出按钮代码如下? Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox") Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xlsx" \'设置筛选器 If lieming.CheckedIndices.Count =0 Then msgbox("不能所有列都不选") Return Else If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 If sjdcxzb="发票库存资料表" Then Dim post As Table = Tables("导出数据操作窗体_Table1") Dim str As String = post.getColVisibleWidth If lieming.value > "" Then For Each c As Col In post.Cols c.visible = False Next For Each s As String In lieming.value.split(",") post.cols(s).Visible = True Next End If post.SaveExcel(dlg.FileName, "发票库存资料表") post.SetColVisibleWidth(str) End If End If End If e.Form.Close 其中有一个逻辑值,导出前显示格式是:“是”与“否”导出Excel后显示格式为:“True”与“False” 怎么设置成显示格式为“是”与“否”呢?
[此贴子已经被作者于2020/8/9 18:02:47编辑过]
|
||||||
-- 作者:有点蓝 -- 发布时间:2020/8/9 20:47:00 -- 方法1、这种方式导:http://www.foxtable.com/webhelp/topics/1148.htm,可以随意设置格式和数据 2、导出后使用代码替换 Dim Book As New XLS.Book("D:\\问题\\111.xls") Dim Sheet As XLS.Sheet = Book.Sheets(0) For n As Integer = 1 To Sheet.Rows.Count -1 If Sheet(n,5).Text = "1" \'假设逻辑列是第6列 Sheet(n,5).Value = "是" Else Sheet(n,5).Value = "否" End If Next Book.Save("D:\\问题\\111.xls") |
||||||
-- 作者:裴保民 -- 发布时间:2020/8/9 21:13:00 -- If Sheet(n,5).Text = "1" \'假设逻辑列是第6列 蓝老师关键是逻辑列是一个动态的怎么获取呢? |
||||||
-- 作者:有点蓝 -- 发布时间:2020/8/9 21:19:00 -- 遍历table的列判断哪一个是逻辑列:http://www.foxtable.com/webhelp/topics/0561.htm |
||||||
-- 作者:裴保民 -- 发布时间:2020/8/9 21:41:00 --
|
||||||
-- 作者:有点蓝 -- 发布时间:2020/8/9 22:39:00 -- 判断table,不是datatable 下表是Col的常用属性:
|
||||||
-- 作者:裴保民 -- 发布时间:2020/8/9 23:06:00 -- 此主题相关图片如下:截图11.png 导出的列和列的顺序是动态的,这样的话如若导出的是所有列正常,如果不是所有列会报错的
|
||||||
-- 作者:有点蓝 -- 发布时间:2020/8/9 23:18:00 -- 导出前,调用到SaveExcel的时候,显示的列和列的顺序肯定是固定的 |
||||||
-- 作者:裴保民 -- 发布时间:2020/8/9 23:25:00 -- 数据表列数固定的,复选列表框CheckedListBox选择的列名和顺序是动态的,现在判断的是数据表中的列顺序,应该不对吧?是不是得判断“复选列表框”所选择的顺序吧 导出按钮代码如下: Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox") Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xlsx" \'设置筛选器 If lieming.CheckedIndices.Count =0 Then msgbox("不能所有列都不选") Return Else If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 If sjdcxzb="发票库存资料表" Then Dim post As Table = Tables("导出数据操作窗体_Table1") Dim str As String = post.getColVisibleWidth If lieming.value > "" Then For Each c As Col In post.Cols c.visible = False Next For Each s As String In lieming.value.split(",") post.cols(s).Visible = True Next End If post.SaveExcel(dlg.FileName, "发票库存资料表") post.SetColVisibleWidth(str) End If End If End If e.Form.Close 现在要实现的是如果导出的数据列包含“是否已填开”逻辑列,就将其显示格式设置为“是”或“否”,否则不设置
[此贴子已经被作者于2020/8/9 23:30:49编辑过]
|
||||||
-- 作者:有点蓝 -- 发布时间:2020/8/10 8:18:00 -- For Each s As String In lieming.value.split(",") post.cols(s).Visible = True Next End If post.SaveExcel(dlg.FileName, "发票库存资料表") dim idx as integer = -1 For Each dc As Col In post.cols If dc.name = "是否填开" Then idx = dc.index exit for End If Next Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) For n As Integer = 1 To Sheet.Rows.Count -1 If Sheet(n,idx ).Text = "1" \'假设逻辑列是第6列 Sheet(n,idx ).Value = "是" Else Sheet(n,idx ).Value = "否" End If Next Book.Save(dlg.FileName) post.SetColVisibleWidth(str) End If End If End If e.Form.Close
|