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

时间:2012-12-19 07:25:39

标签: c# asp.net excel dataset import-from-excel

我正在使用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表中隐藏了一列,当我遍历该单元格时,我得到""。我不知道为了获得该细胞的价值应该做些什么。

感谢

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

试试这个

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();
}

答案 2 :(得分:0)

即使我尝试在我的解决方案中执行此操作,但是,我认为隐藏的文件在隐藏时无法读取。 但是一个解决方法(不推荐)是你可以在从excel表读取值之前将隐藏的单元格/列隐藏为假。 像Worksheetobject.Cells[row,colum].Hidden = false一样。 不建议这样做,但是如果你想让它隐藏和访问,那就有效。