загрузить Excel и импортировать в Datatable - PullRequest
0 голосов
/ 28 августа 2011

Я пытаюсь, пользователь выбирает файл Excel из uploadcontrol и загружает или показывает мне полный путь / каталог файла, потому что я буду анализировать файл и обновлять до datatable.

мой импорт в код данных ниже, как ярешить эту ситуацию

проект разрабатывается с asp.net 4.0, c #

public DataTable Import(String path){

Microsoft.Office.Interop.Excel.ApplicationClass app = new Microsoft.Office.Interop.Excel.ApplicationClass();
    Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(path, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

    Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.ActiveSheet;

    int index = 0;
    object rowIndex = 2;

    DataTable dt = new DataTable();
    dt.Columns.Add("FirstName");
    dt.Columns.Add("LastName");
    dt.Columns.Add("Mobile");
    dt.Columns.Add("Landline");



    DataRow row;

    while (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 1]).Value2 != null)
    {
        rowIndex = 2 + index;
        row = dt.NewRow();
        row[0] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 1]).Value2);
        row[1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 2]).Value2);
        row[2] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 3]).Value2);
        row[3] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 4]).Value2);

        index++;
        dt.Rows.Add(row);
    }
    app.Workbooks.Close();
    return dt;
}

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

С помощью GemBox.Spreadsheet вы можете очень легко выполнить эту задачу.

Вот пример Excel C # код:

ExcelFile ef = new ExcelFile();

ef.LoadXls(path);

DataTable dt = ef.Worksheets[0].CreateDataTable(ColumnTypeResolution.Auto);

return dt;
0 голосов
/ 28 августа 2011

Как говорит Свик, вы на самом деле не задавали вопрос, но в то же время вам может потребоваться исследовать чтение из Excel с использованием ADO.Net , которое позволит вам создать набор данных из листа Excelвсего за несколько шагов.Или, может быть, один из сторонних компонентов для чтения / записи таблиц Excel - это то, что вам нужно (мне приходят в голову Flexcel и Gembox).Все с тем преимуществом, что вам не нужно устанавливать Excel на компьютер, на котором работает ваше приложение.(См. Замечание Матиаса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...