我想从同一目录中读取2个excel文件,并将其完整路径存储在两个不同的变量中。
例如,
C:\\Users\\User\\Desktop\\Folder\\File1.xlsx - First value
C:\\Users\\User\\Desktop\\Folder\\File2.xlsx - Second value
我为此使用了string
数组,但是它不起作用。
请帮助。
我已经执行以下操作:
string[] location = new string[2];
int i = 0;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
this.openFileDialog1.Filter = "Excel|*.xlsx;*.xlxm;*.xls | All files (*.*)|*.*";
this.openFileDialog1.Multiselect = true;
this.openFileDialog1.Title = "Select Excel Files";
DialogResult dr = this.openFileDialog1.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK)
{
foreach (String file in openFileDialog1.FileNames)
{
location[i] = Path.GetDirectoryName(file);
i++;
}
}
答案 0 :(得分:1)
我唯一看到的代码错误是,您正在创建OpenFileDialog
的本地实例,然后尝试将其引用为类成员字段。
OpenFileDialog openFileDialog1 = new OpenFileDialog();
this.openFileDialog1.Filter = "Excel|*.xlsx;*.xlxm;*.xls | All files (*.*)|*.*";
摆脱this.
答案 1 :(得分:0)
如果用户选择了多个文件,您的代码很容易崩溃。我认为没有理由将“位置”的数组大小直接设置为两个。 我建议您检查Alex K的注释。对话框的.FileNames -property已经是一个数组。然后获取目录,对所有人来说都是相同的(就像Crowcoder所写的一样)。
我想,您最后需要的是这个
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "Excel|*.xlsx;*.xlxm;*.xls | All files (*.*)|*.*";
openFileDialog1.Multiselect = true;
openFileDialog1.Title = "Select Excel Files";
DialogResult dr = openFileDialog1.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK)
{
string[] location = openFileDialog1.FileNames;
// do something
}
如果需要,请执行以下操作:
string[] location = openFileDialog1.FileNames.Select(x => Path.GetDirectoryName(x)).ToArray()