我正在使用c#控制檯應用程序中的NPOI庫將一些信息寫入excel。我似乎面臨的問題是代碼不會從一個for循環中運行(如果我從for循環中取出相同的代碼,它將工作並更新電子表格)。我已經通過了代碼,所以我知道它在循環中擊中了createRow,SetCellValue等,所以我知道它不是循環的問題,只是似乎並不想在循環中做到這一點。有趣的是我有幾乎相同的代碼(VB.Net不是C#),它的工作原理是什麼?NPOI庫在循環中使用時不會插入行/單元格數據
樣品C#代碼
using (var fs = new FileStream(templateName, FileMode.Open, FileAccess.Read))
{
var template = new HSSFWorkbook(fs, true);
var sheet = template.GetSheet(sheetName);
int rowCount = 1;
int colCount = 0;
colCount = 0;
NPOI.SS.UserModel.Row rowIn = null;
NPOI.SS.UserModel.Cell cellIn = null;
//foreach (var item in items)
for(int i = 0; i < items.Count; i++)
{
rowIn = sheet.CreateRow(i);
cellIn = rowIn.CreateCell(1);
cellIn.SetCellValue("A");
}
//....rest of the code to save the file
}
以下VB.Net代碼的工作,這是從那裏我曾試圖去改變它,看看它是否會工作的C#代碼不同,但以前這兩個只是一個標準端口。
Using fs As New FileStream(Server.MapPath("/exporttemplates/tender-export-template.xls"), FileMode.Open, FileAccess.Read)
Dim templateWorkbook As New HSSFWorkbook(fs, True)
Dim sheet As HSSFSheet = templateWorkbook.GetSheet("Products")
Dim productsBids As List(Of TenderProductBid) = TenderProductBid.GetTenderProductBids(tbid.id)
Dim i As Integer = 1
For Each pb As TenderProductBid In productsBids
Dim rowIn As NPOI.SS.UserModel.Row = sheet.CreateRow(i)
rowIn.CreateCell(0).SetCellValue(pb.product.productName)
rowIn.CreateCell(1).SetCellValue(pb.quantity)
rowIn.CreateCell(2).SetCellValue(pb.bid)
i += 1
Next
'....rest of the code to save the file
End Using
的文檔不清晰,所以它不是清楚地看到究竟是錯誤的代碼爲它工作在循環外,但沒有它,當迴路工作,將信息傳遞?