Beispiel #1
0
 /// <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);
     }
 }
Beispiel #2
0
        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);
            }
        }