[英]Reading an dynamic Excel File with C# error
我正在嘗試使用C#讀取excel文件,並使用messagebox.Show()
方法在messagebox.Show()
的工作表中顯示每個單元格。 問題是我的excel文件有5行3列。 這是我的Excel工作表: http : //postimg.org/image/xts9n1kif 。
它顯示所有內容,直到“屋頂”,然后停止顯示“光”和“鐵”,但是如果我填充stuff3列,則一切都很好。 按照我的情況,文件可能會更改。 它可能有更多的列或行,其中一些可能為空。
知道為什么它不起作用嗎?
這是我的代碼:
using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace ReadFromExcell
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += new System.EventHandler(this.Form1_Load);
}
private void Form1_Load(object sender, EventArgs e)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open("C:\\Users\\User1\\Desktop\\ItemDB.xlsx");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
for (int i = 1; i <= rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
MessageBox.Show(xlRange.Cells[i, j].Value2.ToString());
}
}
//Close the excel file after reading it.
xlWorkbook.Close();
}
}
}
代碼中最有可能發生的情況是,當循環到達單元格C4 (為空)時, xlRange.Cells[i, j].Value2
變為null 。
嘗試在null
引用上調用ToString()方法(或其他任何方法)將導致NullReferenceException 。
從...更改循環內的代碼...
MessageBox.Show(xlRange.Cells[i, j].Value2.ToString());
...像這樣:
MessageBox.Show( (xlRange.Cells[i, j].Value2 ?? "<no value>").ToString() );
?? 在這種情況下, 操作員很方便。 如果表達式在??的左側 (即xlRange.Cells[i, j].Value2
)得出空值,即? 運算符返回??右側的值。 代替。
(單元格C4可以包含多個空格字符,在這種情況下,該單元格的值不能為null 。但是,只有多個空格字符的單元格是非常罕見的情況。)
現在嘗試這個。
for (int i = 0; i <= rowCount-1; i++)
{
for (int j = 0; j <= xlRange.Rows[0].Columns.Count-1; j++)
{
MessageBox.Show(xlRange.Cells[i, j].Value2.ToString());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.