如何使用c#访问excel中的隐藏列

Posted

技术标签:

【中文标题】如何使用c#访问excel中的隐藏列【英文标题】:How to access hidden column in excel using c# 【发布时间】:2012-12-06 12:18:21 【问题描述】:

我正在使用 Excel.Interop

这是遍历excel单元格的代码:

for(i=1 ; i< 10; i++) 
 
for (int j = 1; j < 10; j++) // 10 is no of columns(static)
                           
    oRng = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[i + 1, j+1]; // getting value here(its "")
    string strValue = oRng.Text.ToString(); 
     dr[j - 1] = strValue; 

                

我有一个隐藏在 Excel 表中的列,n 当我遍历该单元格时,我得到 ""。我不知道应该做什么才能获得该单元格的值。

谢谢

PS:这里使用的drDataRow,我将其进一步存储在DataSet

【问题讨论】:

其他单元格是否返回值?在即时窗口中尝试 oSheet.Cells[i + 1, j+1].Address 和 oSheet.Name 以确保您引用了正确的区域。 【参考方案1】:

Here。 Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定的行为和/或在此环境中运行 Office 时出现死锁。

我建议您寻找像 Open Office XML 这样的免费库或像 Aspose 这样的非免费库。

【讨论】:

【参考方案2】:

试试这个

Public string gethiddenexcellcolumns()
     

    Excel.Application excel = New Excel.Application();
    excel.Visible = True;
    excel.Workbooks.Add();
    excel.Columns("C:C").Select();
    excel.Selection.EntireColumn.Hidden = True;
    var columns = excel.Columns;
    bool hasHiddenColumns = false;
    foreach(column in columns)
    
        If(column.Hidden==true)
        
            hasHiddenColumns = true
                    
    
    return "excel.Columns.Hidden = " + hasHiddenColumns.ToString();

【讨论】:

【参考方案3】:

即使我尝试在我的解决方案中这样做,但是,我认为隐藏时无法读取隐藏文件。 但是一种解决方法(不推荐)是您可以在您从 excel 表中读取值之前将隐藏的单元格/列隐藏为 false。 喜欢Worksheetobject.Cells[row,colum].Hidden = false。 不建议这样做,但如果您想将其隐藏并访问,则可以使用。

【讨论】:

以上是关于如何使用c#访问excel中的隐藏列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 oledb 在 c# 中将下拉列数据插入到 excel 中

TableLayoutPanel隐藏指定的行和列 求指导

如何在一个DataGridView中的一列添加DateTimePicker控件 C#

EXCEL中如何显示隐藏项

C# 关于Gridview的隐藏列问题

如何把excel隐藏的行显示出来