如何使用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:这里使用的dr
是DataRow
,我将其进一步存储在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 中