当前位置: 代码迷 >> .NET报表 >> C# 导出Excel Dropdownlist Validation Add Bind to Cells,该怎么处理
  详细解决方案

C# 导出Excel Dropdownlist Validation Add Bind to Cells,该怎么处理

热度:679   发布时间:2016-05-05 01:38:46.0
C# 导出Excel Dropdownlist Validation Add Bind to Cells
Hi All:
小弟现在在做一个Excel的导出,为了减少出错率,想把一列Column里的Cells动态绑定Data Validation, 现在问题在于Excel的动态绑定的  
cellRange.Validation.Add(
                Excel.XlDVType.xlValidateList,
                Excel.XlDVAlertStyle.xlValidAlertInformation,
                Excel.XlFormatConditionOperator.xlBetween,
                formatStr,
                Type.Missing);
,这里的formatStr最多只能256 char,超出了以后导出Excel打开以后就说Validation丢失,我看了一下Excel里面可以将Validation bind to Cells, 所以就改动了这个
Excel.Range tempRange =(Excel.Range)wSheet.get_Range((Excel.Range)wSheet.Cells[1, columCount + 1], (Excel.Range)wSheet.Cells[list.Count, columCount + 1]);
cellRange.Validation.Add(
                Excel.XlDVType.xlValidateList,
                Excel.XlDVAlertStyle.xlValidAlertInformation,
                Excel.XlFormatConditionOperator.xlBetween,
                tempRange ,
                Type.Missing);
, 如果tempRange只有一个Cells的时候是可以的,当多个Cells的时候会出“System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800A03EC”,当然,绑定一个Cells的时候我不是用wSheet.get_Range,用的直接是(Excel.Range)wSheet.Cells[row,Column],不知道有没有哪位大神能帮我,我已经卡在这卡了很久了...项目紧急,救人如救火
------解决方案--------------------
你可以参考宏定义中的代码,这个多个连续的cells的设置数据有效性的宏代码
Sub 宏3()
'
' 宏3 宏
'

'
    Range("A3:C3").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, Formula1:="0", Formula2:="256"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .IMEMode = xlIMEModeNoControl
        .ShowInput = True
        .ShowError = True
    End With
End Sub
  相关解决方案