Boş olan EXCEL hücresini okumaya çalıştığımda System.com_object hatası alıyorum. Benim kodudur:C#. NET'te EXCEL interop api kullanarak boş hücre değeri nasıl okunur?
public static List<OrderPC> getFilters(string fileCheckout)
{
List<OrderPC> orderPCs = new List<OrderPC>();
XLDoc sldoc = new XLDoc();
string localPath = @"C:\Temp\PCs.xlsx";
Microsoft.Office.Interop.Excel.Application oXL=null;
Microsoft.Office.Interop.Excel.Workbook mWorkBook=null;
Microsoft.Office.Interop.Excel.Worksheet mWSheet1=null;
Microsoft.Office.Interop.Excel.Range xlRange=null;
try
{
oXL = new Microsoft.Office.Interop.Excel.Application();
mWorkBook = oXL.Workbooks.Open(localPath);
mWSheet1 = mWorkBook.Sheets[1];
xlRange = mWSheet1.UsedRange;
foreach (Microsoft.Office.Interop.Excel.Hyperlink hl in xlRange.Hyperlinks)
{
int y = hl.Range.Column;
int z = hl.Range.Row;
string vFilter = mWSheet1.Cells[z, y + 1].Value2.Trim();
if (vFilter.CompareTo("Weekly") == 0)
{
String baseUri = "http://xxx.yyy.net?";
int followUpIndex = baseUri.Length;
OrderPC orderPc = new OrderPC();
orderPc.ProductClass = hl.TextToDisplay.Trim();
orderPc.HyperLink = hl.Address.Trim().Substring(followUpIndex);
orderPc.SpecType = mWSheet1.Cells[z, y - 1].Value2.Trim();
if (mWSheet1.Rows[z].Cells[y + 3] != null || mWSheet1.Rows[z].Cells[y + 3].Value2 != string.Empty)
{
orderPc.ManufactureDate = mWSheet1.Cells[z, y + 3].Value2.ToString(); //Here is the error**
}
//Console.WriteLine(orderPc.ProductClass+"----"+orderPc.HyperLink);
orderPCs.Add(orderPc);
}
}
}
catch (Exception ex)
{
}
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.FinalReleaseComObject(xlRange);
Marshal.FinalReleaseComObject(mWSheet1);
mWorkBook.Close(Type.Missing, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(mWorkBook);
oXL.Quit();
Marshal.FinalReleaseComObject(oXL);
}
return orderPCs;
}
Bu excel dosyası 10 sütunları olan ve ben geçerli bir hücreyi okuyorum varsayalım. hatası "
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
at CallSite.Target(Closure , CallSite , Object)
" ** Ben onun COM beri herhangi bir ipucu yok ** olduğunu. Yardım çok takdir edilir.
bugüne kadar bu dizeyi dönüştürmek Can null ise başarısız olmaz çünkü, başka bir çek
ekleme veya aşağıdaki kodu kullanarak dizeye dönüştürmek: mWSheet1.Cells [ z, y + 3] .Value2.ToString(); ve denemek için ?! – Sylca
Boş hücrelerle ilgili bir şey yaparsam yukarıda belirtilen hatayı atar. – Sulekha