2017-02-11 1 views
0

Ich habe ein Excel-Dokument, das ein paar Tabellen hat (wählte die Daten und wählte Format als Tabelle und gab ihm einen Namen).Der Versuch, eine Liste von "Tabellen" in einem Excel-Dokument zu erhalten

Ich versuche, die Arbeitsmappe zu öffnen und alle Tabellen innerhalb des Dokuments zu erhalten.

Der folgende Code gibt eine Reihe von Abschnitten aus der Arbeitsmappe zurück, gibt jedoch die bestimmten Tabellen nicht zurück.

Ist das möglich?

public partial class Form1 : Form 
{ 
    private DataSet _excelDataSet; 

    public Form1() 
    { 
     InitializeComponent(); 


     var filePath = "c:\\temp\\orderforms\\SampleOrder.xlsx"; 

     var tmpName = Path.GetTempFileName() + Path.GetExtension(filePath); 
     File.Copy(filePath, tmpName); 
     filePath = tmpName; 


     var excelReader = GetExcelDataReader(filePath, true); 
     excelReader.IsFirstRowAsColumnNames = true; 

     _excelDataSet = excelReader.AsDataSet(); 

    } 

    private static IExcelDataReader GetExcelDataReader(string path, bool isFirstRowAsColumnNames) 
    { 
     using (var fileStream = File.Open(path, FileMode.Open, FileAccess.Read)) 
     { 
      IExcelDataReader dataReader; 

      if (path.EndsWith(".xls")) 
       dataReader = ExcelReaderFactory.CreateBinaryReader(fileStream); 
      else if (path.EndsWith(".xlsx")) 
       dataReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream); 
      else 
       throw new FileToBeProcessedIsNotInTheCorrectFormatException("The file to be processed is not an Excel file"); 

      dataReader.IsFirstRowAsColumnNames = isFirstRowAsColumnNames; 

      return dataReader; 
     } 
    } 

    private void btnLoadOrder_Click(object sender, EventArgs e) 
    { 

     DataTable dt1 = _excelDataSet.Tables[Convert.ToInt32(textBox1.Text)]; 

     dataGridView2.DataSource = dt1; 
     MessageBox.Show(dt1.TableName); 
    } 

}

Antwort

0
var excel = new ExcelQueryFactory(); 
excel.FileName = "c:\\temp\\orderforms\\orderform.xlsx"; 
var order = from x in excel.NamedRange<SunglassesOrder>("Order") 
        where x.Qty!="" 
        select x; 
dataGridView1.DataSource = order.ToList(); 
0

Verwendung linqtoexcel Bibliothek. Beispiel kann leicht gefunden werden, wie man diese Bibliothek benutzt.

+0

Dank Jaykumar, Das ist meine Arbeitsversion var excel = new ExcelQueryFactory(); excel.FileName = "c: \\ temp \\ Bestellformulare \\ meine Bestellung form.xlsx"; var order = von x in excel.NamedRange ("Order") wobei x.Qty! = "" select x; dataGridView1.DataSource = order.ToList(); – Jimmy

Verwandte Themen