Загрузка данных столбца Excel с помощью C # в раскрывающемся меню - PullRequest
0 голосов
/ 04 февраля 2009

Я хочу загрузить столбец в Excel в выбираемое выпадающее меню, используя c #. У меня есть доступ к файлу, и я могу загрузить файл в C #, но я не уверен, как реализовать то, что я хочу. Предложения? (Я использую Visual Studio 2008)

Ответы [ 3 ]

3 голосов
/ 04 февраля 2009

Вы можете использовать поставщик управляемых данных OleDb для чтения электронных таблиц Excel с использованием ADO.NET, как если бы вы работали с базой данных.

using System.Data.OleDb;

DataTable dt = new DataTable();
string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Book1.xls;Extended Properties='Excel 8.0;HDR=NO'";
using (OleDbConnection conn = new OleDbConnection(connString))
{
    conn.Open();                
    //Where [F1] = column one, [F2] = column two etc, etc.
    OleDbCommand selectCommand = new OleDbCommand("select [F1] AS [id] from [Sheet1$]",conn);
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = selectCommand;
    adapter.Fill(dt);
}

listBox1.DataSource = dt;
listBox1.DisplayMember = "id";
2 голосов
/ 04 февраля 2009

Вы можете реализовать решение PIA примерно так (при условии 5 элементов в столбце «А» первого листа):

using Excel = Microsoft.Office.Interop.Excel;

...

worksheet = workbook.Worksheets[1] as Excel.Worksheet;

Excel.Range range;
range = worksheet.get_Range("A1", "A5") as Excel.Range;
foreach (Excel.Range cell in range.Cells)
{
    myComboBox.Items.Add(cell.Value2 as string);
}

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

В этом примере используются PIA Office 2007, если вы используете более старую версию, синтаксис должен быть очень близок, но может немного отличаться.

1 голос
/ 04 февраля 2009

Насколько я знаю, у вас есть только несколько вариантов:

  • Первичные сборки взаимодействия (PIA), которые позволяют выполнять чтение и запись из объектной модели Excel.
  • Создание решения Visual Studio Tools for Office (VSTO), которое позволяет эффективно писать «код позади» для электронной таблицы Excel. В зависимости от того, чего вы пытаетесь достичь, это может иметь смысл, если вы на самом деле много работаете в Excel, а ваше текущее приложение на самом деле просто создает расширение для пользовательского интерфейса электронной таблицы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...