Для чтения / записи из таблицы Excel с использованием C # - PullRequest
2 голосов
/ 17 марта 2011

Мне нужно создать программу, которая записывает некоторые данные в таблицу Excel. Что-то простое, например, имя, фамилия, номер телефона, адрес электронной почты в каждой строке с каждой категорией в отдельном столбце.

Я даже не знаю с чего начать. Если бы кто-то мог сказать мне, на какие сборки ссылаться, и, возможно, указал бы мне на веб-сайт или на книгу, которая бы занималась записью / чтением данных из таблицы Excel через программу на C #, это было бы здорово.

Большое спасибо.

Ответы [ 5 ]

7 голосов
/ 17 марта 2011

Добавить ссылку на Microsoft.Office.Interop.Excel.

Предполагается, что у вас где-то есть хранилище этих данных, и ваша модель выглядит примерно так:

class Contact
{
    public string Firstname { get; set; }
    public string Lastname { get; set; }
    public string Email { get; set; }
    public string PhoneNumber { get; set; }
}

Вы можете импортировать его в Excel, как это

Application excelapp = new Application();
excelapp.Visible = true;

_Workbook workbook = (_Workbook)(excelapp.Workbooks.Add(Type.Missing));
_Worksheet worksheet = (_Worksheet)workbook.ActiveSheet;

worksheet.Cells[1, 1] = "First Name";
worksheet.Cells[1, 2] = "Last Name";
worksheet.Cells[1, 3] = "Email";
worksheet.Cells[1, 4] = "Phone Number";

int row = 1;

foreach (var contact in contacts)
{
    row++;

    worksheet.Cells[row, 1] = contact.Firstname;
    worksheet.Cells[row, 2] = contact.Lastname;
    worksheet.Cells[row, 3] = contact.Email;
    worksheet.Cells[row, 4] = contact.PhoneNumber;
}

excelapp.UserControl = true;

Подробнее о библиотеке взаимодействия Excel можно прочитать здесь: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel%28v=office.11%29.aspx

4 голосов
/ 17 марта 2011

Эта конкретная функция называется «автоматизация Excel» в .NET, где вы можете использовать C # для управления вашей электронной таблицей.

Хорошая отправная точка будет, http://support.microsoft.com/kb/302084#top

С уважением, Энди.

1 голос
/ 17 марта 2011

В зависимости от необходимого уровня сложности:

  • Написать текстовый файл с разделителями-запятыми (CSV).Excel откроет его, но вы не получите никакого форматирования.
  • Запишите HTML-таблицу в файл и назовите файл как filename.xls.
  • Запишите файл XML в формате что Excel может открыть .
  • Позвоните в Excel напрямую и получите его для построения электронной таблицы.(См. Ответ Шерхана)
0 голосов
/ 02 февраля 2012

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

Мне не удалось найти каких-либо замечательных проектов с открытым исходным кодом, чтобы сделать это лучше, однако я могу порекомендовать API для работы с электронными таблицами GemBox в качестве хорошо сделанного коммерческого варианта (плюс у них есть базовый ). бесплатная версия , хороша для тестирования). Одним из основных плюсов этого подхода является то, что он на 100% управляемый код, что делает развертывание более точным.

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

0 голосов
/ 17 марта 2011

Почему бы вам просто не создать CSV-файл, сохранив его как xls.Является ли родной Excel обязательным?

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