/// <summary> /// 工作表列表菜单树双击 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ZS_Tree_SheetList_MouseDoubleClick(object sender, MouseButtonEventArgs e) { try { object o = ZS_Tree_SheetList.SelectedItem; if (o != null) { XLSheets x = o as XLSheets; ((MSExcel.Worksheet)_propBindWorkbook.Worksheets[x.SheetName]).Activate(); } } catch (Exception ex) { WriteConsole(ex.Message + ex.StackTrace, true); } }
private void LoadSheetsList() { try { MSExcel._Worksheet xlSheet = null; XLSheets sheetList = new XLSheets(); if (_propBindWorkbook == null) { return; } sheetList.SheetName = _propBindWorkbook.Name; //MessageBox.Show(Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Count.ToString()); if (_propBindWorkbook.Worksheets.Count > 0) { int i = 0; for (i = 1; i <= _propBindWorkbook.Worksheets.Count; ++i) { xlSheet = (MSExcel._Worksheet)_propBindWorkbook.Worksheets[i]; string name = xlSheet.Name; XLSheets tmpObj = new XLSheets(); tmpObj.SheetName = name; SolidColorBrush backGroundColor = Brushes.Transparent; // 标签颜色 string color = ((object)xlSheet.Tab.Color).ToString(); Int32 intColor; if (Int32.TryParse(color, out intColor)) { // 得到的是长度为4的一个byte数组。顺序是RGBA Byte[] bytes = BitConverter.GetBytes(intColor); backGroundColor = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, bytes[0], bytes[1], bytes[2])); tmpObj.BackGround = backGroundColor.ToString(); WriteConsole("获取并且转换之后的工作表标签背景色:" + backGroundColor.Color.ToString(), false); // TODO 理解这两句的处理原理 //int argb = (intColor >> 16) | (intColor & 0xFF) << 16 | (intColor & 0x00FF00); //System.Drawing.Color sc = System.Drawing.Color.FromArgb(argb); } sheetList.Items.Add(tmpObj); } } ZS_Tree_SheetList.Items.Clear(); ZS_Tree_SheetList.Items.Add(sheetList); // 展开Tree TreeViewItem rootItem = ZS_Tree_SheetList.ItemContainerGenerator.ContainerFromItem(ZS_Tree_SheetList.Items[0]) as TreeViewItem; if (rootItem != null && rootItem.Items.Count > 0) { rootItem.IsExpanded = true; } ZS_Tree_SheetList.UpdateLayout(); // 选中与活动工作表同名的选项 foreach (var m in rootItem.Items) { XLSheets s = m as XLSheets; if (s.SheetName == Common.GetActiveSheetName()) { TreeViewItem selItem = rootItem.ItemContainerGenerator.ContainerFromItem(m) as TreeViewItem; selItem.IsSelected = true; selItem.Focus(); break; } } } catch (Exception ex) { WriteConsole(ex.Message + ex.StackTrace, true); } }