Компьютерный справочник
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд

C read excel

How to read an Excel file using C#

The following program illustrates how to open an existing Excel spreadsheet in C# using .NET Framework COM interop capability. Also you can see how to find Named Ranges in Excel and get the range of occupied cells (Used area) in excel sheet.

Excel Library

To access the object model from Visual C# .NET, you have to add the Microsoft Excel 15.0 Object Library to you project.

Create a new project in your Visual Studio and add a Command Button to your C# Form.

How to use COM Interop to Create an Excel Spreadsheet

Form the following pictures you can find how to add Excel reference library in your project.

Select Add Reference dialogue from Project menu of your Visual Studio.

Select Microsoft Excel 15.0 Object Library of COM leftside menu and click OK button.

After import the reference library, we have to initialize the Excel application Object.

Next step is to open the Excel file and get the specified worksheet.

After get the selcted worksheet, next step is to specify the used range in worksheet

How to specify a range in Excel sheet?

If you want to select a specific cell in Excel sheet, you can code like this.

Reading Named Ranges in Excel

Worksheet.get_Range Method

If you want to select multiple cell value from Excel sheet, you can code like this.

How to get the range of occupied cells in excel sheet

For reading entire content of an Excel file in C#, we have to know how many cells used in the Excel file. In order to find the used range we use «UsedRange» property of xlWorkSheet . A used range includes any cell that has ever been used. It will return the last cell of used area.

How to properly clean up Excel interop objects

Interop marshaling governs how data is passed in method arguments and return values between managed and unmanaged memory during calls. Most data types have common representations in both managed and unmanaged memory. The interop marshaler handles these types for you. Other types can be ambiguous or not represented at all in managed memory.

It is important to note that every reference to an Excel COM object had to be set to null when you have finished with it, including Cells, Sheets, everything.

The Marshal class is in the System.Runtime.InteropServices namespace, so you should import the following namespace.

Looking for a C# job ?

There are lot of opportunities from many reputed companies in the world. Chances are you will need to prove that you know how to work with .Net Programming Language. These C# Interview Questions have been designed especially to get you acquainted with the nature of questions you may encounter during your interview for the subject of .Net Programming. Here’s a comprehensive list of .Net Interview Questions, along with some of the best answers. These sample questions are framed by our experts team who trains for .Net training to give you an idea of type of questions which may be asked in interview.

Open and Read an Excel Spreadsheet Programmatically

Copy and paste the following source code in your C# project file

C read excel

Лучший отвечающий


I want to write a program to access cells in an excel file?

How can I do that?


  • Изменено Zain_Ali 5 сентября 2011 г. 6:40
  • Помечено в качестве ответа Martin_Xie Moderator 19 сентября 2011 г. 11:49

  • Помечено в качестве ответа Martin_Xie Moderator 19 сентября 2011 г. 11:50

“ I want to write a program to access cells in an excel file? ”

Thanks all for your great help and suggestions.

Welcome to MSDN Forum.

Usually, there are 2 approaches to access Office Excel files in .Net.

1. COM Interop approach as the above said.

FAQ: How do I use Excel Automation in .NET

Читать еще:  Дата минус дата excel

Add Reference to COM component “Microsoft Excel Object Library” into your project.

Code sample: Get/Set cell value in Excel Spreadsheet.

object oExcel = new Excel.Application ;

object oBook = oExcel.Workbooks.Open( «C:\Book1.xls» ) ;
object oSheet = oBook.Worksheets( 1 ) ;
// e.g. Read value in A2 cell
string cellValue = oSheet.Range( «A2» ).Value ;
// e.g. Change value in A2 cell
oSheet.Range( «A2» ).Value = «» ;
oBook.SaveAs( «C:\Book1.xls» , true ) ;
oExcel.Quit() ;

2. OleDb Data Provider approach

Retrieve Excel Sheet data and bind into DataGridView control, and then access particular cells via DataGridView.

OleDbConnection conn = new OleDb.OleDbConnection(( «provider=Microsoft.Jet.OLEDB.4.0; » + ( «data source=C:\myData.xls; » + «Extended Properties=Excel 8.0;» ))) ;
// Select the data from Sheet1 of the workbook.
OleDbDataAdapter ada = new OleDbDataAdapter( «select * from Sheet1$]» , conn) ;
DataSet ds = new DataSet() ;
ada.Fill(ds) ;
dataGridView1.DataSource = ds.Tables[ 0 ].DefaultView ;
conn.Close() ;

// Access particular cells on DataGridView.

Martin Xie [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.

Read excel file in C# (.XLSX or .XLS using OLEDB / EPPlus)

Whether you are working on Windows or on Web or on Console application, at one stage we need to process data and excel file is iwdely used for it, so in this article, I am going to provide you C# code to open and read excel file (.xls) line by line using Console application and OLEDB, you can use the same code C# code to fill ASP.NET GridView or MVC application table.

So, let’s get started with it.

Step 1: Create a new Console applicaiton in your Visual Studio, by navigating to File->New->Project-> Select «Windows Classic dekstop» from left-pane & «Console-App» from right-pane -> Provide a name to your application «CSharpReadExcelFile» -> Click «OK»

Step 2: Now we have our Console application and we need to add C# code using OLEDB to read excel file, for that we would need connection string with the source URL of excel file.

In the given example as I am using .XLS excel file, here is my connection string

For Excel 97-2003 Format we can use “Microsoft Jet OLEDB Driver 4.0”, while for the Connection String for Excel 2007 Format (.XLSX), we can use “Microsoft Ace OLEDB Driver 12.0” and it’s connection string would be as below

In the above Connection string’s you may see extended properties HDR=Yes & HDR =No

Use HDR=YES if first excel row contains headers, alternatively,use HDR=NO when your excel’s first row is not headers and it’s data.

Now, we have connection string , we need to create connection using OLEDB and open it

Read the excel file using OLEDB connection and fill it in dataset

in the above code Sample-spreadsheet-file is the name of Sheet.

Note: With the help of sheet name, you can refer to Excel data, you need to use ‘$’ with sheet name, e.g. Select * from [Sheet1$]

Now loop through each row of excel sheet and print it in Console app

If you are using ASP.NET, you can bind it with Grid View using below code instead of printing it

Now, we have discussed each step, suppose this is out Excel file

and ese the code below in your Console application, build and execute it.

Output of the above code will be as below

Now, if you are working on 64 bit operating system, you may get this error «The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine.«.

Resolving this error: If your application is Desktop based, compile your EXE with x86 CPU (Menu Tools, Options, select Projects And Solutions, check the show advanced build configurations. Now in the Build Menu you will be able to go to the Config Manager and set output to x86.)

If your application is web based, then Enable ’32-Bit Applications’ in application pool.

On IIS, change the «Enable 32-bit Applications» setting to True, in the Advanced Settings for the Application Pool.

Читать еще:  Excel буквы вместо цифр в столбцах

Disadvantage of using OLEDB for Excel

With OLEDB, you cannot format data that you inserted/updated in EXCEL sheet but Interop can do it efficiently. You cannot perform any mathematical operation or working on graphs using OLEDB, but it is really a good way to insert/update data in EXCEL where no Excel application is installed.

Reading Excel file using EPPlus

If you don’t want to use OleDb, you can try using EPPlus Nuget package based solution.

For this, you would have to install EPPlus, so navigate to «Tools»-> «Nuget package manager»-> «Manage Nuget for this solution» -> Select «Browse» tab and search for «EPPlus», then install the nuget package.

Once you have installed the package, in your Console application «Program.cs», you can use the code below

Here is the image, which shows console application output with sample excel file (.xlsx), we are using .xlsx file here for reading in C# using EPPlus

You may also like to read:

That’s it, feel free to provide your feedback in the below comment’s section.

Чтение файлов Excel из C#

есть ли бесплатная библиотека с открытым исходным кодом для чтения файлов Excel (.xls) непосредственно из программы c#?

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

30 ответов

Это то, что я обычно использую. Это немного отличается, потому что я обычно вставляю AsEnumerable () при редактировании таблиц:

поскольку это позволяет мне использовать LINQ для поиска и построения структур из полей.

Если это просто данные, содержащиеся в файле Excel, вы можете прочитать данные через ADO.NET — . См. строки подключения, перечисленные здесь:

Update: тогда вы можете просто прочитать рабочий лист через что-то вроде select * from [Sheet1$]

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

эта превосходная статья поможет вам избежать некоторых распространенных ошибок: http://blog.lab49.com/archives/196

Это то, что я использовал для Excel 2003:

Как насчет Excel Data Reader?

Я использовал в нем гнев, в производственной среде, чтобы вытащить большие объемы данных из различных файлов Excel в SQL Server Compact. Он работает очень хорошо и довольно прочно.

вот код, который я написал на C#, используя .NET 1.1 несколько лет назад. Не уверен, что это будет именно то, что вам нужно (и, возможно, не мой лучший код :)).

Koogra-это компонент с открытым исходным кодом, написанный на C#, который читает и пишет файлы Excel.

а ты конкретно спроси .xls, подразумевая более старые форматы файлов, для форматов OpenXML (например, xlsx) я настоятельно рекомендую OpenXML SDK (http://msdn.microsoft.com/en-us/library/bb448854.aspx)

некоторое время назад я много читал из файлов Excel на C#, и мы использовали два подхода:

  • COM API, где вы получаете доступ к объектам Excel напрямую и манипулировать ими с помощью методов и свойств
  • драйвер ODBC, который позволяет использовать Excel как базу данных.

последний подход был много быстрее: чтение большой таблицы с 20 столбцами и 200 строками займет 30 секунд через COM и полсекунды через ODBC. Так Что Я . порекомендовал бы подход к базе данных, если все, что вам нужно, это данные.

ExcelMapper-это инструмент с открытым исходным кодом (http://code.google.com/p/excelmapper/), которые можно использовать для чтения листов Excel Как строго типизированных объектов. Он поддерживает форматы xls и xlsx.

Я хочу показать простой метод для чтения файла xls /xlsx.Сеть. Я надеюсь, что следующее будет полезным для вас.

не бесплатно, но с последним офисом есть очень хорошая автоматизация .Net API. (в течение долгого времени был API, но был неприятным COM) вы можете делать все, что хотите / нужно в коде, пока приложение Office остается скрытым фоновым процессом.

Простите меня, если я здесь не на базе, но разве это не то, что офис Пиа для?

Читать еще:  Ограничение количества символов в ячейке excel

в последнее время, частично, чтобы стать лучше в LINQ. Я использую API автоматизации Excel для сохранения файла в виде таблицы XML, а затем обрабатываю этот файл с помощью LINQ to XML.

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

SmartXLS является еще одним компонентом электронной таблицы excel, который поддерживает большинство функций диаграмм excel, движков формул и может читать/писать формат excel2007 openxml.

компонент .NET Excel Reader .NET может удовлетворить ваши требования. Это достаточно хорошо для чтения файлов XLSX и XLS. Так что попробуйте:

Я рекомендую библиотеку FileHelpers, которая является бесплатной и простой в использовании библиотекой .NET для импорта / экспорта данных из EXCEL, фиксированной длины или разделенных записей в файлах, строках или потоках + больше.

вы можете попробовать использовать это решение с открытым исходным кодом, что делает работу с Excel намного чище.

SpreadsheetGear является удивительным. Да, это расходы,но по сравнению с этими другими решениями это стоит того. Это быстро, надежно, очень всесторонне, и я должен сказать, что после использования этого продукта в моей полной программной работе более полутора лет, их поддержка клиентов фантастическая!

решение, которое мы использовали, необходимо, чтобы:

  • разрешить Читать/Писать из Excel производимых файлов
  • быть быстро в производительности (не так, как с помощью COMs)
  • быть MS Office независимая (необходимо использовать без клиентов с установленным MS Office)
  • быть свободный или Открыть Источник (но активно развивается)

есть несколько вариантов, но мы нашли NPoi (.NET-порт давно существующего Java Poi проект с открытым исходным кодом), чтобы быть лучшим: http://npoi.codeplex.com/

Она также позволяет работать с .док и. ppt-формат файла

Если это просто табличные данные. Я бы рекомендовал файл data helpers by Marcos Melli который можно скачать здесь.

Работа с Excel с помощью C# (Microsoft.Office.Interop.Excel)

Оставляю заметку по работе с Excel с помощью C#.

Привожу фрагменты кода, которые искал когда-то сам для работы с Excel документами.

Наработки очень пригодились в работе для формирования отчетности.

Прежде всего нужно подключить библиотеку Microsoft.Office.Interop.Excel.

Visual Studio здесь довольно старой версии. Если у вас версия новая, отличаться будет только вид окна.

Далее создаем псевдоним для работы с Excel:

using Excel = Microsoft.Office.Interop.Excel;

Расстановка рамок.

Расставляем рамки со всех сторон:

Цвет рамки можно установить так:

Выравнивания в диапазоне задаются так:


Определим задачу: получить сумму диапазона ячеек A4:A10.

Для начала снова получим диапазон ячеек:

Excel.Range formulaRange = sheet.get_Range(sheet.Cells[4, 1], sheet.Cells[9, 1]);

Далее получим диапазон вида A4:A10 по адресу ячейки ( [4,1]; [9;1] ) описанному выше:

string adder = formulaRange.get_Address(1, 1, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);

Теперь в переменной adder у нас хранится строковое значение диапазона ( [4,1]; [9;1] ), то есть A4:A10.

Выделение ячейки или диапазона ячеек

Так же можно выделить ячейку или диапазон, как если бы мы выделили их мышкой:

Авто ширина и авто высота

Чтобы настроить авто ширину и высоту для диапазона, используем такие команды:

Получаем значения из ячеек

Чтобы получить значение из ячейки, используем такой код:

Добавляем лист в рабочую книгу

Чтобы добавить лист и дать ему заголовок, используем следующее:

Добавление разрыва страницы

Сохраняем документ

Как открыть существующий документ Excel


При работе с Excel с помощью C# большую помощь может оказать редактор Visual Basic, встроенный в Excel.

Для этого в настройках ленты надо добавить пункт «Разработчик». Далее начинаем запись макроса, производим действия и останавливаем запись.

Далее заходим в редактор Visual Basic и смотрим код, который туда записался:

В данном макросе записаны все действия, которые мы выполнили во время его записи. Эти методы и свойства можно использовать в C# коде.

Данный метод так же может оказать помощь в формировании относительных формул, например, выполнить сложение чисел, находящиеся слева от текущей ячейки на 4 столбца, и т.п. Пример:

Так же во время работы может возникнуть ошибка: метод завершен неверно. Это может означать, что не выбран лист, с которым идет работа.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт