it-roy-ru.com

Использование C # для чтения/записи файлов Excel (.xls/.xlsx)

Как я могу читать и писать файлы Excel в C #? Я уже добавил библиотеку объектов Excel в свой проект, но не получил достаточно четкого описания того, что необходимо сделать для доступа к файлам.

Пожалуйста, помогите мне понять, и, объясняя, пожалуйста, имейте в виду, что я новичок в этом, но я не полный новичок. Я много учусь, поэтому я не совсем невежественен.

18
jitsuin

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

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

Сторонние библиотеки намного проще в использовании, чем объекты Microsoft COM, на мой взгляд. Я бы предложил попробовать.

14
Brad Butner

Я использую NPOI для всех своих потребностей в Excel.

http://npoi.codeplex.com/

Поставляется с решением примеров для многих распространенных задач Excel. 

8
Paul Alan Taylor
**Reading the Excel File:**

string filePath = @"d:\MyExcel.xlsx";
Excel.Application xlApp = new Excel.Application();  
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);  

Excel.Range xlRange = xlWorkSheet.UsedRange;  
int totalRows = xlRange.Rows.Count;  
int totalColumns = xlRange.Columns.Count;  

string firstValue, secondValue;   
for (int rowCount = 1; rowCount <= totalRows; rowCount++)  
{  
    firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);  
    secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);  
    Console.WriteLine(firstValue + "\t" + secondValue);  
}  
xlWorkBook.Close();  
xlApp.Quit(); 


**Writting the Excel File:**

Excel.Application xlApp = new Excel.Application();
object misValue = System.Reflection.Missing.Value;  

Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);  

xlWorkSheet.Cells[1, 1] = "ID";  
xlWorkSheet.Cells[1, 2] = "Name";  
xlWorkSheet.Cells[2, 1] = "100";  
xlWorkSheet.Cells[2, 2] = "John";  
xlWorkSheet.Cells[3, 1] = "101";  
xlWorkSheet.Cells[3, 2] = "Herry";  

xlWorkBook.SaveAs(filePath, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue,  
Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);  



xlWorkBook.Close();  
xlApp.Quit();  
1
Ramya Prakash Rout

Вы также можете быть заинтересованы в http://openxmldeveloper.org/

1
Peter Schneider

Вы можете использовать Excel Automation (это, в основном, база COM), например:

Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;


xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open("1.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

Ссылка на полный учебник

1
Baget

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

Существуют также сторонние библиотеки, которые проще в использовании ... и могут использоваться на сервере, чего нет у MS.

0
LosManos