Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SpreadsheetGear是否按名称获取列?_C#_Excel_Spreadsheetgear - Fatal编程技术网

C# SpreadsheetGear是否按名称获取列?

C# SpreadsheetGear是否按名称获取列?,c#,excel,spreadsheetgear,C#,Excel,Spreadsheetgear,我刚开始做一个使用电子表格的项目。CopyFromDataTable用于从数据库获取所有数据。有很多领域可以合作;我们正在格式化它们,如果它们为空则隐藏某些范围,等等。例如: SpreadsheetGear.IRange cells = worksheet.Cells; cells["G1"].EntireColumn.NumberFormat = "m/d/yyyy"; 因此,如果重新排列列或删除一列,我似乎必须返回并调整所有硬编码值以反映单元格移位。有没有办法通过列的第一个单元格的

我刚开始做一个使用电子表格的项目。CopyFromDataTable用于从数据库获取所有数据。有很多领域可以合作;我们正在格式化它们,如果它们为空则隐藏某些范围,等等。例如:

SpreadsheetGear.IRange cells = worksheet.Cells;    
cells["G1"].EntireColumn.NumberFormat = "m/d/yyyy";
因此,如果重新排列列或删除一列,我似乎必须返回并调整所有硬编码值以反映单元格移位。有没有办法通过列的第一个单元格的名称来引用该列,从而使其更加模块化


我找到了,但仍然需要对列进行硬编码。

一种可能是搜索标题/字段名

Sub test()
Dim strFieldName As String
Dim rngHeading As Range

With Sheet1

    strFieldName = "Heading 3" 'find Heading Name
    With .Rows("1:1") 'search row 1 headings

        Set rngHeading = .Find(What:=strFieldName, LookIn:=xlValues, lookAt:=xlWhole, _
        SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

        'check if found
        If Not rngHeading Is Nothing Then

        MsgBox rngHeading.Address
        MsgBox rngHeading.Row
        MsgBox rngHeading.Column
        rngHeading.EntireColumn.NumberFormat = "m/d/yyyy"

        End If

    End With

End With

End Sub

一种可能是搜索标题/字段名

Sub test()
Dim strFieldName As String
Dim rngHeading As Range

With Sheet1

    strFieldName = "Heading 3" 'find Heading Name
    With .Rows("1:1") 'search row 1 headings

        Set rngHeading = .Find(What:=strFieldName, LookIn:=xlValues, lookAt:=xlWhole, _
        SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

        'check if found
        If Not rngHeading Is Nothing Then

        MsgBox rngHeading.Address
        MsgBox rngHeading.Row
        MsgBox rngHeading.Column
        rngHeading.EntireColumn.NumberFormat = "m/d/yyyy"

        End If

    End With

End With

End Sub

电子表格的一个很好的替代品是。使用此库,您可以创建一个模板xlsx,在其中进行所有格式化,然后您可以使用此“模板”文档中的部分创建最终的、待报告的xlsx文件,而无需编程设置数字格式,如您的示例所示。

电子表格设备的一个很好的替代方案是。使用此库,您可以创建一个模板xlsx,在其中进行所有格式化,然后您可以使用此“模板”文档中的部分创建最终的、待报告的xlsx文件,而无需通过编程设置数字格式,就像你的例子一样。

谢谢你的答案-没有忘记这一点,但还没有时间来测试这一点,最终会找到答案并接受答案,如果答案是。谢谢你的答案-没有忘记这一点,但还没有时间测试这一点,最终会找到答案并接受答案,如果答案是的话。