前言
对于日常工作中需要打开多个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; } } } }}