我在 ac# 控制台应用程序中使用 NPOI 库将一些信息写入 excel。我似乎面临的问题是代码不会从 aa for 循环中运行(如果我从 for 循环中取出相同的代码,它可以工作并更新电子表格)。
我已经单步执行了代码,所以我知道它在循环中命中了 createRow、SetCellValue 等,所以我知道它不是循环的问题,只是似乎不想在循环中执行它。有趣的是我有几乎相同的代码(VB.Net 不是 C#)可以工作吗?
示例 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
文档不清楚,因此当循环工作并且正在传递信息时,无法清楚地看到代码在循环之外工作但在其中没有什么问题?