我正在尝试使用C#
在Visual Studio Windows应用程序中读取一个Excel文件(.xlsx)。 我从这个链接ExcelLibrary中使用Google Excel Library
。 我用下面的代码来读取button点击excel文件。 我在Visual Studio 2012 Professional中使用以下代码,
using ExcelLibrary.SpreadSheet; using ExcelLibrary.BinaryDrawingFormat; using ExcelLibrary.BinaryFileFormat; using ExcelLibrary.CompoundDocumentFormat; namespace ExcelRead { public partial class ReadForm : Form { public ReadForm() { InitializeComponent(); } private void btnRead_Click(object sender, EventArgs e) { WorkBook inputBook = Workbook.Load("D:\\Files\\input.xlsx"); List<Worksheet> sheetList = inputBook.Worksheets; for (int i = 0; i < sheetList.Count; i++) { Worksheet sheet = inputBook.Worksheets[i]; for (int rowIndex = sheet.Cells.FirstRowIndex; rowIndex <= sheet.Cells.LastRowIndex; rowIndex++) { Row row = sheet.Cells.GetRow(rowIndex); for (int colIndex = row.FirstColIndex; colIndex <= row.LastColIndex; colIndex++) { Cell cell = row.GetCell(colIndex); Console.WriteLine(cell.ToString()); } } } } } }
但是它提供了OutOfMemoryException was unhandled
exception,当我运行代码并单击button。 它在例外情况下显示以下说明,
An unhandled exception of type 'System.OutOfMemoryException' occurred in mscorlib.dll
我尝试使用下面的try-catch
,
try { WorkBook inputBook = Workbook.Load("D:\\Files\\input.xlsx"); List<Worksheet> sheetList = inputBook.Worksheets; for (int i = 0; i < sheetList.Count; i++) { Worksheet sheet = inputBook.Worksheets[i]; for (int rowIndex = sheet.Cells.FirstRowIndex; rowIndex <= sheet.Cells.LastRowIndex; rowIndex++) { Row row = sheet.Cells.GetRow(rowIndex); for (int colIndex = row.FirstColIndex; colIndex <= row.LastColIndex; colIndex++) { Cell cell = row.GetCell(colIndex); Console.WriteLine(cell.ToString()); } } } } catch (Exception err) { Console.WriteLine(err); }
但是它又说了以下错误,
Adding a 'catch clause' around an active statement will prevent the debug session from continuing while Edit and Continue is enabled
我试图读取的Excel文件只有18 KB,所以内存不足是不可能的。 我不知道为什么我得到这个例外。
由于您正在使用“.xlsx”文件,因此应使用GAC的“Microsoft.Office.Interop.Excel”和“Office”参考。
这些应该已经安装在您的计算机上,假定您的计算机上已经安装了Microsoft Office。