如何在C#中读写Excel文件?我已经将Excel对象库添加到了我的项目中,但是我没有清楚地了解访问文件需要做些什么。
请帮助我理解,在解释时,请记住我对此有点新意,但我不是一个完整的新手。我经常学习,所以我并不是完全无知。
答案 0 :(得分:14)
我非常喜欢使用EPPlus来执行这些类型的操作。 EPPlus是一个可以在项目中引用的库,可以在服务器上轻松创建/修改电子表格。我将它用于任何需要导出功能的项目。
Here's a nice blog entry that shows how to use the library,虽然图书馆本身应附带一些说明如何使用它的样本。
在我看来,第三方库比Microsoft COM对象更容易使用。我建议试一试。
答案 1 :(得分:8)
答案 2 :(得分:1)
答案 3 :(得分:1)
您可以使用Excel Automation(它基本上是COM Base的东西),例如:
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);
答案 4 :(得分:0)
如果您正在进行简单的操作并且可以将自己绑定到xlsx,那么您可以考虑自己操纵XML。我已经做到了,发现它比浏览excel库更快。
还有第三方库可以更容易使用......并且可以在MS不能使用的服务器上使用。
答案 5 :(得分:0)
**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();
答案 6 :(得分:0)
如果您想要易于使用的库,可以使用 NUGET 包:
请注意,这些是 3rd-Party 软件包 - 您可以免费将它们用于基本功能,但如果您想要更多功能,可能会有“专业”版本。
他们使用二维对象数组(即object[][] cells
)来读取/写入数据。