2013-04-05 9 views
9

Pracuję nad arkuszami programu Excel w języku C# i wybrałem tylko arkusze programu Excel. Próbowałem następujący kodfiltrowanie tylko plików Excel w C#

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) 

przy użyciu tego kodu nie jestem tylko coraz arkuszy Excel, ale również skończyło się skrót plików. Czy ktoś może zasugerować, w jaki sposób mogę ograniczyć pliki skrótów.

+3

Licznik przykład z tak http://stackoverflow.com/questions/2350802/can-the-net-openfiledialog-be-setup-to-allow-the-user-to-select- a-lnk-file –

+0

Możesz także spróbować połączyć filtr: 'Pliki Excel | * .xls, *. xlsx' –

+0

@BlackMaggie Chcę, aby pliki linków były ograniczone. nie pozwolić im. –

Odpowiedz

7

Proszę sprawdzić, czy wszystko jest w porządku z poniższym podejściem.
W międzyczasie pozwól mi spróbować, jeśli coś jest możliwe dzięki odbiciom.

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; 
} 
+0

Możesz także rozważyć wywołanie Win32 API bezpośrednio http://msdn.microsoft.com/en-us/library/windows/desktop/ms646927(v=vs.85).aspx –

+0

Jak korzystać z tego OpenKeywordsFileDialog_FileOk()? Czy jest to metoda lub zdarzenie generowane przez system? –

+0

Niestety zapomniałem dodać handler'a do zdarzenia 'FileOk'. Zmieniłem odpowiedź teraz. –

3

Spróbuj tego użyć. Mam nadzieję, że to pomoże! Twoje zdrowie! : D

browseFile.Filter = "Pliki Excel (*. Xls lub .xlsx) | .xls; *. Xlsx";

+0

Nawet to nie działa.To kończy się pokazując tylko skróty. Chcę tylko Excel bez Shorcuts. –

+0

Dzięki - potrzebowałem wiedzieć, aby użyć średnika do oddzielenia rozszerzeń (to jest .xls od .xlsx). – Buck

Powiązane problemy