DC娱乐网

EXCEL交互式动态导航条小工具(C

前言

对于日常工作中需要打开多个WPS EXCEL,或者单个excel工作簿有很多worksheet页签的时候,这时候要在多个excel工作簿或者工作表来回切换是个经常让人很头疼。为了解决这个问题,特意写了一个excel导航条小工具,方便在多个excel工作簿和工作表切换。

效果展示

界面设计

功能简述

左边列表框:展示当前打开的Excel工作簿,点击后激活对应的工作簿

右边列表框:展示选定工作簿里面的worksheet,点击后即会对应的工作表

底部按钮: 获取当前打开的Excel工作簿,并添加到左边的列表框

功能实现

小工具用C#实现,当前只支持获取打开的WPS工作簿。部分代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Windows.Forms;using Excel;namespace WPSApp{    public partial class Form1 : Form    {        private Excel.Application xls = null;        private Workbook curWorkbook = null;        public Form1()        {            InitializeComponent();        }        private Workbooks GetOpenedExcels()        {            try            {                xls = (Excel.Application)Marshal.GetActiveObject("Excel.Application");            }            catch (COMException)            {                xls = new Excel.Application();            }            //            return xls.Workbooks;        }        private Workbook GetWorkbook(string workbookName)        {        }              /// <summary>        /// 加载打开的WPS文件        /// </summary>        private void btnLoadExcels_Click(object sender, EventArgs e)        {            // Clear            lstExcels.Items.Clear();            lstSheets.Items.Clear();            // Load            Workbooks workbook = GetOpenedExcels();            if (workbook != null)            {                foreach (Workbook item in workbook)                {                    lstExcels.Items.Add(item.Name);                }            }        }        /// <summary>        /// 点击lstExcels列表框元素后,        ///     激活Workbook,        ///     同时获取对应的Worksheet,并显示到lstSheets列表框        /// </summary>        private void lstExcels_Click(object sender, EventArgs e)        {            if (lstExcels.Text.Equals(null))            {                return;            }            lstSheets.Items.Clear();            curWorkbook = GetWorkbook(lstExcels.Text);            ActivateWorkbook(curWorkbook);            List<Worksheet> sheets = GetWorksheets(curWorkbook);            lstSheets.Items.AddRange(sheets.Select(n => n.Name).ToArray());        }        /// <summary>        /// 激活对应的Worksheet        /// </summary>        private void lstSheets_Click(object sender, EventArgs e)        {            curWorkbook = GetWorkbook(lstExcels.Text);            ActivateWorkbook(curWorkbook);            List<Worksheet> sheets = GetWorksheets(curWorkbook);            foreach (Worksheet item in sheets)            {                if(item.Name.Equals(lstSheets.Text))                {                    ActivateWorksheet(item);                    break;                }            }        }    }}