以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  foxtable如何设置excel的下拉框数据有效性?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=142184)

--  作者:ahui010
--  发布时间:2019/10/20 19:06:00
--  foxtable如何设置excel的下拉框数据有效性?

foxtable如何设置excel的数据有效性?

最近一直在查询foxtable如何将下拉框设置到excel模板数据有效性中,都没有答案,这已经成为我不喜欢foxtable的主要原因了,有时真想要骂娘放弃foxtable,如果有这方面指导就太好了。



是因为excel是最基本的办公软件,录入数据方便,且使用的人数特别多。如果用excel模板采集好数据,再导入到foxtable开发的相应平台上,能给数据上报带来巨大的便利。foxtable功能强大,下拉框列表的选项功能,如果能生成到excel模板的数据有效性上,对于规范数据录入有重要的意义。



如foxtabel有一个在客户表和一个数据规范表,数据规范表用于保存各个下拉框列表的数据,有省份列、县市列、区号列、性别列、公司类别列等等,还会根据系统使用随时添加其他的用于下拉框的数据项,以满足系统能设置各种下拉框列表数据。


现在希望在foxtable里有一个导出模板按钮,点一下就可以根据客户表的属性设置,通过代码导出一个客户表的excel模板供大家用excel来填写,其中的省份列、县市列、区号列、性别列、公司类别列都设置了数据有效性,能从下拉框里选择数据项填写,内容就是来自foxtable的数据规范表的内容。



如果只能通过excel设置这个模板,再保存到项目的文件夹里面的,是很不现实的,因为每次在foxtable上调整一下客户的列属性或数据规范表的内容,都要用excel再设置一次模板,很不方便。如果能在foxtable上根据客户表的属性,自动调整生成excel模板的设置,就十分方便了。


--  作者:有点蓝
--  发布时间:2019/10/20 20:46:00
--  
参考

Dim dlg As New OpenFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    Dim App As New MSExcel.Application
    try
        Dim Wb As MSExcel.Workbook = App.WorkBooks.open(dlg.FileName)
        Dim ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
        Dim rg As MSExcel.Range  = ws.Columns(2) ) \'设置第二列
        Dim str As String = "选项1,选项2,选项3" \'数据有效性的内容
        rg.Validation.Delete()
        rg.Validation.Add(MSExcel.XlDVType.xlValidateList, MSExcel.XlDVAlertStyle.xlValidAlertStop, MSExcel.XlFormatConditionOperator.xlNotBetween, str, Nothing)
        rg.Validation.InCellDropdown = True
        rg.Validation.IgnoreBlank = True

        Wb.Save
        Wb.Close
        App.Quit
    catch ex As Exception
        msgbox(ex.message)
        App.Quit
    End try
End If

--  作者:ahui010
--  发布时间:2019/10/21 9:46:00
--  EXCEL数据有效性的实现代码

用下面的代码可以用,能在WorkSheets(1)的A1:A6里设置来自下拉框数据表省份列的内容。

 

Dim s As String  = DataTables("下拉框数据").SQLGetComboListString("省份")
s = s.Replace("|",",")
Dim App As New MSExcel.Application
App.Visible = True
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("c:\\test.xlsx")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
With Ws.Range("A1:A6").Validation
  .Delete
  .Add(Type:=MSExcel.XlDVType.xlValidateList,  AlertStyle:=MSExcel.XlDVAlertStyle.xlValidAlertStop,  Operator:=MSExcel.XlFormatConditionOperator.xlBetween, Formula1:=s)
 End With

 

 

也可以用下面这一段:

 

Dim s As String  = DataTables("下拉框数据").SQLGetComboListString("省份")
    s = s.Replace("|",",")
 Dim App As New MSExcel.Application
     App.Visible = True
Dim Wb As MSExcel.Workbook = App.WorkBooks.Add
    Wb.WorkSheets(1).name = "hhh"   ‘ 为工作表起名为hhh
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
With Ws.Range("A1:A6").Validation
  .Delete
  .Add(Type:=MSExcel.XlDVType.xlValidateList,  AlertStyle:=MSExcel.XlDVAlertStyle.xlValidAlertStop,  Operator:=MSExcel.XlFormatConditionOperator.xlBetween, Formula1:=s)
 End With
  Wb.SaveAs("d:\\123.xlsx")

 

[此贴子已经被作者于2019/10/21 13:32:31编辑过]