使用Excel.interop从C#中选择Excel工作表中数据透视表中的列过滤器值

时间:2014-01-28 06:18:12

标签: c# excel interop console-application

我有一个包含近15张的excel文件。每个工作表包含一个由另一个用户创建的数据透视表。所有数据透视表都从一个名为“data”的工作表中获取数据。
我的C#控制台应用程序以特定的时间间隔更新“数据”表中的数据。


我的要求是我必须在使用C#excel interop更新数据表后,在每个工作表中的数据透视表列标签过滤器中选择当前和上个月的值。

请帮帮我。

1 个答案:

答案 0 :(得分:1)

我这样做了

            Excel._Application XL = new Excel.Application();
            Excel._Workbook WB;
            Excel._Worksheet SH;
            WB = XL.Workbooks.Open(@filepath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            SH = (Excel.Worksheet)WB.Worksheets.get_Item(1);
                lastUsedRow = SH.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row;

                for (int i = 1; i < lastUsedRow; i++)
                {
                    if (GetCell(SH, i, 2) == "")
                    {
                          //Do your code
                    }
                }

        public static string GetCell(Excel._Worksheet worksheet, int row, int column)
        {
            Excel.Range range = worksheet.Cells[row, column] as Excel.Range;
            if (range == null || range.Value2 == null)
            {
                return string.Empty;
            }
            return range.Value2.ToString();
        }

        private static void ReleaseComObject(object activeXObject)
        {
            if (activeXObject != null)
            {
                Marshal.ReleaseComObject(activeXObject);
                activeXObject = null;
            }
        }