C# 如何识别excel工作表中的隐藏列

C# 如何识别excel工作表中的隐藏列,c#,excel-interop,C#,Excel Interop,我正在使用Excel interop打开Excel文件并将数据写入Excel工作表。excel工作表中存在隐藏列,并且将数据写入隐藏列。如何识别隐藏列而不在隐藏列中写入数据 con.Open(); string query1 = "SELECT fi.* FROM ****", SqlDataAdapter da = new SqlDataAdapter(query1, con); DataSet ds = new DataSet(); // load the data

我正在使用Excel interop打开Excel文件并将数据写入Excel工作表。excel工作表中存在隐藏列,并且将数据写入隐藏列。如何识别隐藏列而不在隐藏列中写入数据

con.Open();           
string query1 =  "SELECT fi.* FROM ****",
SqlDataAdapter da = new SqlDataAdapter(query1, con);
DataSet ds = new DataSet();
// load the data set
da.Fill(ds);
con.Close();
// loop through the data set and write data to excel 
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
    for (int j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
    {
        String data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
        mWSheet1.Cells[i + 3, j + 1] = data;
    }
}
mWorkBook.SaveAs(path, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
con.Open();
string query1=“从****中选择fi.*”,
SqlDataAdapter da=新的SqlDataAdapter(查询1,con);
数据集ds=新数据集();
//加载数据集
da.填充(ds);
con.Close();
//循环遍历数据集并将数据写入excel

对于(int i=0;我可能重复了在for循环中为column.hidden属性添加检查。为什么要使用Excel Interop?是否确实需要与正在运行的Excel实例交互?根据您所描述的,您最好使用一个库,该库能够在没有互操作的情况下直接操作Excel文件,例如EPPlus、NPOI、OpenXML SDK、Aspose等
if(mWSheet1.Cells[i+3,j+1].entireclumn.Hidden==true)…
将@mason所说的加倍。这里不需要互操作。你可以使用
microsoft.ace.oledb.12.0
提供程序,像任何其他数据库一样连接到excel。并且不会有隐藏列。所有列都将被视为表列。特别是如果这是服务器应用程序,使用互操作不是一个好主意。有很多例子-谷歌。