Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#读取/写入Excel文件(.xls/.xlsx)_C#_.net_Excel - Fatal编程技术网

使用C#读取/写入Excel文件(.xls/.xlsx)

使用C#读取/写入Excel文件(.xls/.xlsx),c#,.net,excel,C#,.net,Excel,如何在C#中读取和写入Excel文件?我已经将Excel对象库添加到我的项目中,但是我没有得到足够清晰的描述,说明访问这些文件需要做什么 请帮助我理解,在解释的时候,请记住我是个新手,但我不是一个完全的新手。我学习很多,所以我并非完全无知。如果您正在进行简单的操作,并且可以将自己绑定到xlsx,那么您可以自己研究如何操作XML。我已经做了,并且发现它比摸索excel库要快 还有一些第三方LIB更易于使用。。。并且可以在MS无法使用的服务器上使用。我使用NPOI满足所有Excel需求 提供了许多

如何在C#中读取和写入Excel文件?我已经将Excel对象库添加到我的项目中,但是我没有得到足够清晰的描述,说明访问这些文件需要做什么


请帮助我理解,在解释的时候,请记住我是个新手,但我不是一个完全的新手。我学习很多,所以我并非完全无知。

如果您正在进行简单的操作,并且可以将自己绑定到xlsx,那么您可以自己研究如何操作XML。我已经做了,并且发现它比摸索excel库要快


还有一些第三方LIB更易于使用。。。并且可以在MS无法使用的服务器上使用。

我使用NPOI满足所有Excel需求


提供了许多常见Excel任务的示例解决方案

您可以使用Excel自动化(它基本上是一种基于COM的工具),例如:

我非常喜欢使用来执行这些类型的操作。EPPlus是一个库,您可以在项目中引用它,并在服务器上轻松创建/修改电子表格。我将它用于任何需要导出功能的项目

,尽管库本身应该附带一些示例来解释如何使用它

在我看来,第三方库比Microsoft COM对象更易于使用。我建议尝试一下。

**阅读Excel文件:**
**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();  
字符串文件路径=@“d:\MyExcel.xlsx”; Excel.Application xlApp=新的Excel.Application(); Excel.Workbook xlWorkBook=xlApp.Workbooks.Open(文件路径); Excel.Worksheet xlWorkSheet=(Excel.Worksheet)xlWorkBook.Worksheets.get_项(1); Excel.Range xlRange=xlWorkSheet.UsedRange; int totalRows=xlRange.Rows.Count; int totalColumns=xlRange.Columns.Count; 字符串firstValue,secondValue;
对于(int rowCount=1;rowCount,如果您想要易于使用的库,您可以使用NUGET软件包

  • ExcelDataReader-读取Excel文件(大多数文件格式)
  • SwiftExcel-编写Excel文件(.xlsx)
请注意,这些是第三方软件包-您可以免费将其用于基本功能,但如果您需要更多功能,可能会有“pro”版本


他们使用二维对象数组(即
object[][]单元格
)来读取/写入数据。

这里是一个起点。但是您需要在服务器上安装office dll。EPPLus使用OOXML直接读取和写入文件,这非常好。不要忘记以下条件:“EPPlus是一个.net库,它使用Open Office Xml格式(xlsx)读取和写入Excel 2007/2010文件。”因此.xls文件将无法工作。
**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();