我有一個問題,實際上並沒有循環的循環。我已經在下面發佈了我的代碼的簡化版本。基本上,使用NPOI excel庫,我有一個Excel數據文件在第一張和第二張,所以我需要做一個循環來通過這兩張紙。For循環C#不循環
下面是我到目前爲止所做的,但是這隻能通過第一張紙然後退出。它不能增加變量w。正如你所看到的,在這個代碼中實現了其他的循環,它運行良好,所以我不明白它。
這是一個非常漫長的一天,也許我錯過了一件非常簡單的事情。我可能會把它放錯或什麼的。如果任何人能發現我可能是做錯了,我會非常感激:)
public class SalesFileProcessor : ISalesProcessor
{
public List<FTPSalesRow> ProcessSalesFile(string filename)
{
try
{
using (FileStream fs = File.Open(filename, FileMode.Open, FileAccess.Read))
{
int numberOfSheets = 2;
//Loop through sheets - does not work
for (int w = 0; w <= numberOfSheets; w++)
{
HSSFWorkbook templateWorkbook = new HSSFWorkbook(fs);
HSSFSheet sheet = templateWorkbook.GetSheetAt(w);
HSSFRow row = null;
for (int i = 1; i <= sheet.LastRowNum; i++)
{
FTPSalesDetails t = null;
int currentColumn = 0;
try
{
ModelContainer ctn = new ModelContainer();
row = sheet.GetRow(i);
if (row == null)
{
continue;
}
t = new FTPSalesDetails
{
RowNumber = i,
InvoiceDate = GetCellValue(row.GetCell(0)),
CountrySoldIn = GetCellValue(row.GetCell(1)),
NetUnitsSold = GetCellValue(row.GetCell(2)),
Item = GetCellValue(row.GetCell(3)),
ProductCode = GetCellValue(row.GetCell(5)),
};
if (t.ProductCode == null && t.NetUnitsSold == null)
{
return null;
}
int Qty = int.Parse(t.NetUnitsSold);
for (int x = 0; x < Qty; x++)
{
ItemSale ts = new ItemSale
{
ItemID = GetItemID(t.ProductCode),
ManufacturerID = GetManufacturerID("Samsung"),
DateSold = DateTime.Now,
};
ctn.AddToItemSales(ts);
ctn.SaveChanges();
}
}
catch (IndexOutOfRangeException) { }
}
} //End Loop - the one that doesn't work
}
}
catch (IOException exp)
{
throw new FTPSalesFileProcessingException("Could not open the Sales data file", exp);
}
catch (Exception exp)
{
throw new FTPSalesFileProcessingException("An unknown eror occured during processing the file", exp);
}
return null;
}
你試過調試嗎?看着我和W? :) – 2011-02-23 16:02:28
@阿門,我當然做到了。 numberOfSheets正如你所期望的那樣,w似乎保持在零,而我的工作原理應該如此。 – 109221793 2011-02-23 16:03:37
您是否通過此代碼來驗證所有值是否按照您的預期設置? – SuperNES 2011-02-23 16:17:20