Exemple #1
0
        private void RefreshSheetData()
        {
            Excel.Worksheet      sheet           = null;
            Excel.QueryTables    queryTables     = null;
            Excel.QueryTable     queryTable      = null;
            Excel.CustomProperty changesProperty = null;

            try
            {
                var module = this.AddinModule as AddinModule;
                module.SheetChangeEvent = false;
                sheet = ExcelApp.ActiveSheet as Excel.Worksheet;
                if (sheet != null)
                {
                    queryTables = sheet.QueryTables;

                    if (queryTables.Count > 0)
                    {
                        queryTable = queryTables.Item(1);
                        queryTable.RefreshStyle       = Excel.XlCellInsertionMode.xlOverwriteCells;
                        queryTable.PreserveColumnInfo = true;
                        queryTable.PreserveFormatting = true;
                        queryTable.Refresh(false);
                    }
                    changesProperty = sheet.GetProperty("uncommittedchanges");
                    if (changesProperty != null)
                    {
                        changesProperty.Delete();
                    }
                }
                module.SheetChangeEvent = true;
            }
            finally
            {
                if (changesProperty != null)
                {
                    Marshal.ReleaseComObject(changesProperty);
                }
                if (queryTable != null)
                {
                    Marshal.ReleaseComObject(queryTable);
                }
                if (queryTables != null)
                {
                    Marshal.ReleaseComObject(queryTables);
                }
                if (sheet != null)
                {
                    Marshal.ReleaseComObject(sheet);
                }
            }
        }
        public static void Delete(Excel.Worksheet worksheet, string propertyName)
        {
            if (null == worksheet)
            {
                throw new ArgumentNullException("worksheet");
            }

            if (string.IsNullOrWhiteSpace(propertyName))
            {
                throw new ArgumentNullException("propertyName");
            }

            Excel.CustomProperty property = GetProperty(worksheet, propertyName);

            if (null == property)
            {
                return;
            }

            property.Delete();
        }