] Как импортировать из Excel в DataSet с помощью Microsoft.Office.Interop.Excel? [

] [

] Что я хочу делать [

] [

] Я пытаюсь использовать пространство имен [][] Microsoft.Office.Interop.Excel [] [], чтобы открыть Excel файл (XSL или CSV, но, к сожалению, [] не [] XSLX) и импортируйте его в DataSet. У меня нет контроля над именами листов или столбцов, поэтому мне нужно разрешить их изменения. [

] [

] Что я пробовал [

] [

] Я пробовал [] метод OLEDB [] этого в в прошлом, и у него было много проблем (с ошибками, медленно и требовалось предварительное знание схемы файла Excel), поэтому я хочу избежать повторения этого снова. Я бы хотел использовать Microsoft.Office.Interop.Excel для импорта книги непосредственно в DataSet или прокручивать рабочие листы и загружать каждый из них в DataTable. [

] [

] Хотите верьте, хотите нет, но у меня был проблемы с поиском ресурсов для этого. [] Несколько поисковых запросов на StackOverflow [] обнаружили, что в основном люди пытались сделать обратное (DataSet => Excel) или технику OLEDB. Google не намного более полезен. [

] [

] То, что у меня есть на данный момент [

] [

    public void Load(string filename, Excel.XlFileFormat format = Excel.XlFileFormat.xlCSV)
    {
        app = new Excel.Application();
        book = app.Workbooks.Open(Filename: filename, Format: format);

        DataSet ds = new DataSet();

        foreach (Excel.Worksheet sheet in book.Sheets)
        {
            DataTable dt = new DataTable(sheet.Name);
            ds.Tables.Add(dt);

            //??? Fill dt from sheet 
        }

        this.Data = ds;
    }

] [

] Я могу либо импортировать всю книгу сразу, либо просматривать по одному листу за раз. Могу ли я сделать это с помощью Interop.Excel? [

]

24
задан Community 23 May 2017 в 12:34
поделиться