以编程方式编辑Excel下拉列表项目
我有成千上万的Excel文件,全部使用相同的模板制作而成。 每个列都有date,零件号和工程师等参数。 工程师单元格被设置为下拉列表,因此用户只能input某些工程师的名字。 当我们想要添加新的工程师或摆脱已经离开的人时,我们当前在需要时在Microsoft脚本编辑器中更改名称列表:
<x:DataValidation> <x:Range>$D$19:$D$37</x:Range> <x:Type>List</x:Type> <x:CellRangeList/> **<x:Value>"Peter, Paul, Mary"</x:Value>** </x:DataValidation>
每遇到一个Excel文件我们都没有更新,我们必须按ctrl + F11,find“Peter,Paul,Mary”这一行,然后手动将其改为“Peter,John,Susan”。 这变得非常烦人,我想编辑上述数据,用“Peter,John,Susan”replace“Peter,Paul,Mary”。 我想这样做的每个文件名以“ABC”结尾的Excel文件。 有没有一个代码解决scheme,而不是search每个文件,并手动更改它? 我更喜欢C ++ / C#,但是如果需要的话可以使用Visual Basic进行pipe理,或者更容易。
你可以用COM互操作来完成所有这些。 确保你的项目有互操作性的Excel引用。 (你需要安装在你的机器上的Excel相信)
using System.IO; using Microsoft.Office.Interop.Excel; using Excel = Microsoft.Office.Interop.Excel;
然后是应用程序
class Program { static void Main(string[] args) { var mypath = @"c:\my\search\directory"; string[] files = Directory.GetFiles(mypath, "*abc.xls", SearchOption.AllDirectories); foreach (var file in files) { Find(Path.Combine(mypath,file)); } } private static void Find(string path) { object missing = null; Excel.Range currentFind = null; Excel.Range firstFind = null; var app = new Excel.Application(); app.Visible = true; Excel.Workbook workbook = app.Workbooks.Open(path, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); var worksheet = workbook.Sheets[1]; Excel.Range foundNames = worksheet.Range["A1", "B3"]; // You should specify all these parameters every time you call this method, // since they can be overridden in the user interface. currentFind = foundNames.Find("Peter, Paul, Mary", LookIn: XlFindLookIn.xlValues, LookAt: XlLookAt.xlPart); currentFind.Replace(What:"Peter, Paul, Mary", Replacement:"Peter, John, Susan"); workbook.Save(); } }
这个例子假定一切都在A1和B3的第一个工作表上。 显然,你的工作表将会不同,所以这些值将需要改变,以反映这一点。 此外,你可以删除“可见=真”,可能会加快速度。 我只是这样做,以便我可以看到我的应用程序正在做什么。
我build议你看看下面的链接:
ExcelPackage
这是一个开源库 ,您可以使用它来操作Excel表格 ,您可以使用该库创build , 加载和保存 Excel表格。
你说你最喜欢c++
或c#
, 图书馆是在c#
,所以这将是容易的。
以下链接指导您解释如何使用它的教程:
ExcelPackage教程
当我在网上查找excel库的c#时,发现了以下页面:
使用c#编辑Excel文件
这是一个完整的教程,关于如何修改现有的Excel表,我肯定会推荐给你。