C # и читать значения из файла Excel - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть файл Excel, а столбцы имеют имена (источник данных НЕ контролируется мной .. он передается мне клиентом). Хотя столбцы изменяются, заголовки столбцов никогда не меняются.

В файле это называется «Имя»

Как получить доступ к данным в каждой ячейке в том же столбце?

Ответы [ 5 ]

4 голосов
/ 09 декабря 2011

Откройте файл Excel в качестве базы данных. Тогда вам не придется беспокоиться о положении столбцов:

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyExcelFile.xls;Extended Properties=\"Excel 8.0;HDR=YES\"";
using (var conn = new System.Data.OleDb.OleDbConnection(connString)) {
    conn.Open();
    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("Select * From [SheetName$]", conn);
    OleDbDataReader reader = cmd.ExecuteReader();
    int firstNameOrdinal = reader.GetOrdinal("First Name");
    int lastNameOrdinal = reader.GetOrdinal("Last Name");
    while (reader.Read()) {
        Console.WriteLine("First Name: {0}, Last Name: {1}", 
            reader.GetString(firstNameOrdinal), 
            reader.GetString(lastNameOrdinal));
    }
}
2 голосов
/ 09 декабря 2011
0 голосов
/ 09 декабря 2011

Я успешно использовал FileHelpers Library для чтения файлов Excel в прошлом.

0 голосов
/ 09 декабря 2011

Я использовал excelLibrary в прошлом и нашел его очень простым в использовании.

0 голосов
/ 09 декабря 2011

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

 private bool DownloadExcelData(string fileName, ref DataTable informationDT)
            {
                // bool success
                bool success = true;

                // open the file via odbc
                string connection = ConfigurationManager.ConnectionStrings["xls"].ConnectionString;
                connection = String.Format(connection, FilePath + fileName);
                OleDbConnection conn = new OleDbConnection(connection);
                conn.Open();

                try
                {
                    // retrieve the records from the first page
                    OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Information$]", conn);
                    OleDbDataAdapter adpt = new OleDbDataAdapter(cmd);
                    adpt.Fill(informationDT);
                }
                catch { success = false; }

                // close the connection
                conn.Close();
                return success;
            }

Вот некоторые примеры соединений ODBC для файлов xls и xlsx:

<add name="xls" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;'" />
    <add name="xlsx" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...