C#求助:如何将两个Excel文件完整路径存入不同变量?
解决你的Excel文件路径存储问题
嘿,我瞅了你的代码,马上发现了问题所在——你现在存的是文件的目录路径,不是完整的文件路径!而且我们可以优化一下逻辑,确保能准确拿到你需要的两个文件路径。
问题分析
你用了Path.GetDirectoryName(file),这个方法返回的是文件所在文件夹的路径(比如C:\Users\User\Desktop\Folder),而不是你要的完整文件路径(C:\Users\User\Desktop\Folder\File1.xlsx)。另外,最好加个判断,防止用户选了多于或少于两个文件的情况,避免数组越界或者变量为空。
修正后的代码(数组版本)
如果还是想用数组存储两个文件路径,可以这么改:
string[] location = new string[2]; OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "Excel|*.xlsx;*.xlsm;*.xls|All files (*.*)|*.*"; // 修正了你笔误的xlxm为xlsm openFileDialog1.Multiselect = true; openFileDialog1.Title = "Select Excel Files"; DialogResult dr = openFileDialog1.ShowDialog(); if (dr == DialogResult.OK) { // 先判断用户是否选了正好两个文件 if (openFileDialog1.FileNames.Length == 2) { for (int i = 0; i < 2; i++) { // 直接赋值完整文件路径,不用GetDirectoryName location[i] = openFileDialog1.FileNames[i]; } // 这里可以验证结果 Console.WriteLine($"第一个文件路径:{location[0]}"); Console.WriteLine($"第二个文件路径:{location[1]}"); } else { MessageBox.Show("请选择正好两个Excel文件!"); } }
单独变量版本(如果你明确要两个独立变量)
如果更倾向于用两个单独的变量而不是数组,代码可以这样写:
string filePath1 = string.Empty; string filePath2 = string.Empty; OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "Excel|*.xlsx;*.xlsm;*.xls|All files (*.*)|*.*"; openFileDialog1.Multiselect = true; openFileDialog1.Title = "Select Excel Files"; DialogResult dr = openFileDialog1.ShowDialog(); if (dr == DialogResult.OK) { if (openFileDialog1.FileNames.Length == 2) { filePath1 = openFileDialog1.FileNames[0]; filePath2 = openFileDialog1.FileNames[1]; // 验证输出 MessageBox.Show($"第一个文件:{filePath1}\n第二个文件:{filePath2}"); } else { MessageBox.Show("请选择正好两个Excel文件!"); } }
几个小细节提醒
- 你之前的Filter里写了
*.xlxm,应该是*.xlsm(Excel宏工作簿格式),我已经帮你修正了。 - 加上文件数量判断,能避免用户误操作选多或选少,让程序更健壮。
openFileDialog1.FileNames本身就是一个包含所有选中文件完整路径的字符串数组,直接用就行,不用额外处理。
内容的提问来源于stack exchange,提问作者Primo Chalice
相关产品推荐
相关产品推荐

