我正在使用VS2010 + Office Interop 2007尝试从具有5-6页的Excel电子表格中获取一些特定的电子表格名称.我正在做的就是在制表符分隔的文本文件中保存我需要的那些电子表格以便进一步处理.因此,对于我得到的三个电子表格名称,每个名称都有自己的制表符分隔文本文件.
我可以通过Interop保存文件作为制表符分隔,但这假设我知道给定的页面名称是什么.我被告知每个页面名称都不遵循严格的命名约定,但在查找所需名称时,我可以考虑多个名称,如"RCP","rcp","收件人"等.
我的问题是,我可以在某种索引中获取所有电子表格页面名称,以便我可以遍历它们并尝试找到我需要的三个名称吗?这比尝试通过bajillion尝试/捕获来获取"RCP","rcp","收件人"页面要好得多.
我很接近,因为我可以通过以下方式在Excel电子表格中获取COUNT个页面:
Excel.Application excelApp = new Excel.Application(); // Creates a new Excel Application
excelApp.Visible = true; // Makes Excel visible to the user.
// The following code opens an existing workbook
string workbookPath = path;
Excel.Workbook excelWorkbook = null;
try
{
excelWorkbook = excelApp.Workbooks.Open(workbookPath, 0,
false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true,
false, 0, true, false, false);
}
catch
{
//Create a new workbook if the existing workbook failed to open.
excelWorkbook = …Run Code Online (Sandbox Code Playgroud) 好的。这个有点傻。
我正在为 Access 数据库编写前端(我知道,重新发明轮子)。这个前端很简单。个人可以添加新条目,也可以搜索现有条目。两者都工作正常。该程序是自我更新的,但非常简单。它比较所执行程序的当前文件版本(不是程序集),并将自身与远程驱动器版本进行引用以查看哪个版本更新。如果远程驱动器的可执行文件较新,我会生成一个批处理文件,通过终止当前程序、将较新的程序复制到与旧程序相同的目录并自动打开新程序来更新脚本。每次用户打开程序时都会进行此更新检查。
我不确定这是否相关,但我最近一直在编辑该进程以在 XP 和 7 上工作。因此,我需要修改它以适应文件路径中的空格(文档和设置 - XP)。一切都很好。
突然(看起来),程序开始在我的测试 XP 机器上持续崩溃(在 2 台不同的 XP 机器上进行了验证)。我的个人机器正在运行 7,并且完全按照预期运行,包括更新,都很好。
XP 上的崩溃是我的 Home 窗体的 InitializeComponent() 处未处理的异常。我的表单的快速布局如下:
我们不会进入其他表单,因为它在加载 Home.cs 表单之前崩溃。
我已将其范围缩小到在 Home 的 InitializeComponent() 中崩溃,在以下构造函数中:
public Home(string DB)
{
InitializeComponent();
database = DB;
lblVersion.Text = "Version: " + FileVersionInfo.GetVersionInfo(Directory.GetCurrentDirectory() + "\\KnowledgeBase.exe").ProductVersion;
}
Run Code Online (Sandbox Code Playgroud)
并带有以下消息。抱歉出现颗粒感...屏幕截图的屏幕截图:我的代表数少于 10,并且不会输入错误:

这是我的 InitializeComponent()
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Home));
this.btnNewEntry = new System.Windows.Forms.Button();
this.label1 = new …Run Code Online (Sandbox Code Playgroud)