Запрос и отображение данных Excel с помощью ASP.NET, ADO.NET и Visual C# .NET

В этой статье показано, как запрашивать и отображать данные с листа Excel через страницу ASP.NET (.aspx) с помощью Visual C# .NET.

Исходная версия продукта: ASP.NET
Исходный номер базы знаний: 306572

Создание примера листа Excel

  1. Запустите Microsoft Excel и создайте новый лист.

  2. Добавьте следующие сведения на новый лист, чтобы создать базу данных Excel:

    Номер строки A Б
    1 FirstName LastName
    2 Скотт Епископ
    3 Кэти Иордания

    Примечание.

    Хотя данные начинаются с ячейки A1 в этом примере, эти данные можно добавить в любые смежные ячейки на листе.

  3. Выделите строки и столбцы, в которых есть данные.

  4. В меню Вставка наведите указатель мыши на пункт Имя и нажмите кнопку Определить.

  5. В текстовом поле Имена в книге введитеmyRange1 и нажмите кнопку ОК.

  6. В меню Файл выберите пункт Сохранить. В списке Сохранить в выберите корневой каталог веб-сервера (как правило, C:\InetPub\Wwwroot\). В текстовом поле Имя файла введите ExcelData.xls. Нажмите кнопку OK.

  7. В меню Файл выберите пункт Выход.

Создание примера ASP.NET с помощью Visual C# .NET

В этом примере кода показано, как запрашивать и отображать информацию на листе Excel. В следующем коде используется лист, созданный в предыдущем разделе.

  1. Откройте Microsoft Visual Studio .NET. Отобразится интегрированная среда разработки (IDE) Visual Studio .NET.

  2. В меню Файл выберите пункт Создать и затем пункт Проект.

  3. В диалоговом окне Новый проект в разделе Типы проектов щелкните Проекты Visual C#. В разделе Шаблоны щелкните ASP.NET веб-приложение.

  4. В диалоговом окне Новый проект найдите текстовые поля Имя и Расположение .

    Примечание.

    • Текстовое поле Имя недоступно (оно отображается неактивным или неактивным). Текстовое поле Расположение содержит текст (или аналогичный). http://localhost/WebApplication1
    • Замените текст в текстовом поле http://localhost/ExcelCSTestРасположение на и нажмите кнопку ОК. Создается новый проект, который включает веб-форму с именем WebForm1.aspx.
  5. В интегрированной среде разработки Visual Studio .NET найдите окно Обозреватель решений. Если вы не можете найти его, щелкните Обозреватель решений в меню Вид.

  6. В Обозреватель решений щелкните правой кнопкой мыши WebForm1.aspx и выберите пункт Просмотреть Designer, чтобы отобразить конструктор для внешнего вида страницы. Конструктор позволяет добавлять элементы управления и управлять внешним видом страницы.

  7. Найдите панель элементов. В зависимости от параметров параметров интегрированной среды разработки панель элементов может отображаться в виде окна или кнопки (которая часто отображается в левой части интегрированной среды разработки). Если не удается найти панель элементов, щелкните Панель элементов в меню Вид .

    Если панель элементов отображается в виде кнопки, наведите указатель на кнопку, чтобы отобразить содержимое панели элементов.

  8. Когда представление конструктора веб-формы активно, панель элементов делится на разделы, включая веб-формы, компоненты, HTML и другие разделы. Щелкните раздел веб-формы.

  9. В разделе веб-формы панели элементов щелкните DataGrid и перетащите его в конструктор для WebForm1.

  10. Щелкните правой кнопкой мыши WebForm1.aspx и выберите пункт Просмотреть код , чтобы отобразить источник страницы программной части.

  11. Добавьте следующие инструкции в верхнюю часть страницы кода программной части над разделом пространства имен:

    using System.Data.OleDb;
    using System.Data;
    
  12. Выделите следующий код, щелкните его правой кнопкой мыши и выберите команду Копировать. В WebForm1.aspx.cs вставьте код в Page_Load событие:

    // Create connection string variable. Modify the "Data Source"
    // parameter as appropriate for your environment.
    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
    "Extended Properties=Excel 8.0;";
    
    // Create connection object by using the preceding connection string.
    OleDbConnection objConn = new OleDbConnection(sConnectionString);
    
    // Open connection with the database.
    objConn.Open();
    
    // The code to follow uses a SQL SELECT command to display the data from the worksheet.
    // Create new OleDbCommand to return data from worksheet.
    OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn);
    
    // Create new OleDbDataAdapter that is used to build a DataSet
    // based on the preceding SQL SELECT statement.
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
    
    // Pass the Select command to the adapter.
    objAdapter1.SelectCommand = objCmdSelect;
    
    // Create new DataSet to hold information from the worksheet.
    DataSet objDataset1 = new DataSet();
    
    // Fill the DataSet with the information from the worksheet.
    objAdapter1.Fill(objDataset1, "XLData");
    
    // Bind data to DataGrid control.
    DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;
    DataGrid1.DataBind();
    
    // Clean up objects.
    objConn.Close();
    
  13. В меню Файл выберите команду Сохранить все , чтобы сохранить файлы проекта.

  14. В меню Сборка щелкните Сборка , чтобы выполнить сборку проекта. Этот шаг подготавливает код на странице кода программной части, чтобы его можно было выполнить.

  15. В Обозреватель решений щелкните правой кнопкой мыши WebForm1.aspx и выберите пункт Просмотр в браузере, чтобы запустить код.

Дополнительное объяснение кода

В примере кода в этой статье используется поставщик Microsoft Jet OLE DB для доступа к листу Excel. Этот код использует следующие строка подключения для подключения к листу:

// Create connection string variable. Modify the "Data Source"
// parameter as appropriate for your environment.
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
"Extended Properties=Excel 8.0;";

Как указано в комментариях, необходимо изменить сведения о пути для конкретного листа Excel. Кроме того, необходимо также задать значение параметра для Extended Properties правильного подключения к файлу.

Примечание.

Строка подключения использует функцию Server.MapPath . Эта функция принимает путь относительно Microsoft IIS (IIS) к файлу и возвращает путь к жесткому диску к этому файлу. Например, в разделе Создание примера листа Excel вы создадите ExcelData.xls в корневом веб-каталоге, который обычно находится по адресу C:\Inetpub\Wwwroot. При этом также создается вложенная папка с именем ExcelCSTest в папке Wwwroot и файл с именем WebForm1.aspx в _ExcelCSTest_folder.

В этом примере путь к файлу на жестком диске похож C:\Inetpub\Wwwroot\ExcelCSTestна . Wwwroot содержит ExcelData.xls, ExcelCSTest содержит WebForm1.aspx.

Путь IIS к файлам похож C:\Web Root\ExcelCSTestна . А корневой веб-каталог содержит ExcelData.xls, ExcelCSTestWebForm1.aspx.

В этом случае относительный путь от страницы WebForm1.aspx к файлуExcelData.xls.. /ExcelData.xls. . Символы / информируют IIS о том, что они должны подняться на один уровень папки. Таким образом, код Server.MapPath("../ExcelData.xls") возвращает следующую строку:

C:\Inetpub\Wwwroot\ExcelData.xls

Вы не обязаны использовать Server.MapPath. Вы также можете жестко закодировать эти сведения на определенный путь или использовать любой метод, чтобы указать расположение файла Excel на жестком диске.

Ссылки

Дополнительные сведения об использовании ADO.NET см. в статье Заполнение объекта DataSet из базы данных с помощью Visual C# .NET.

Примечание.

Приведенные здесь примеры компаний, организаций, продуктов, доменных имен, адресов электронной почты, логотипов, людей, мест и событий являются вымышленными. Никакая связь с реальной компанией, организацией, продуктом, доменным именем, адресом электронной почты, логотипом, человеком, местами или событиями не предназначена или не должна быть выведена.