15

我正在使用 C# 处理 excel 工作表,我很惊讶只选择了 excel 工作表。我尝试了以下代码

OpenFileDialog browseFile = new OpenFileDialog();
browseFile.DereferenceLinks = true;
browseFile.Filter = "Excel|*.xls|Excel 2010|*.xlsx";
// browseFile.Filter = "Link Files (*.lnk)|*.lnk";

browseFile.Title = "Browse Excel file";
if (browseFile.ShowDialog() == DialogResult.Cancel)

使用此代码不仅可以获取 excel 表,还可以获取快捷方式文件。任何人都可以建议我如何限制快捷方式文件。

4

2 回答 2

14

请查看您是否对以下方法感到满意。
同时,让我尝试使用反射是否有可能。

    OpenFileDialog openKeywordsFileDialog = new OpenFileDialog();
    openKeywordsFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    openKeywordsFileDialog.Multiselect = false;
    openKeywordsFileDialog.ValidateNames = true;
    openKeywordsFileDialog.DereferenceLinks = false; // Will return .lnk in shortcuts.
    openKeywordsFileDialog.Filter = "Excel |*.xlsx";
    openKeywordsFileDialog.FileOk += new System.ComponentModel.CancelEventHandler(OpenKeywordsFileDialog_FileOk);
    var dialogResult =  openKeywordsFileDialog.ShowDialog();


void OpenKeywordsFileDialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
{
         OpenFileDialog fileDialog = sender as OpenFileDialog;
         string selectedFile = fileDialog.FileName;
         if (string.IsNullOrEmpty(selectedFile) || selectedFile.Contains(".lnk"))
         {
             MessageBox.Show("Please select a valid Excel File");
             e.Cancel = true;
         }
         return;
}
于 2013-04-05T04:39:41.170 回答
10

尝试使用这个。希望这有帮助!干杯! :D

browseFile.Filter = "Excel 文件 (*.xls 或.xlsx)| .xls;*.xlsx";

于 2013-04-05T03:36:00.647 回答