Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NPOI SetCellValue方法不';不向单元格写入数据_C#_Asp.net_Excel_Npoi - Fatal编程技术网

C# NPOI SetCellValue方法不';不向单元格写入数据

C# NPOI SetCellValue方法不';不向单元格写入数据,c#,asp.net,excel,npoi,C#,Asp.net,Excel,Npoi,我在使用NPOI将数据写入Excel工作表单元格时遇到一些问题。 这是我的代码: FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read); hssfworkbook = new HSSFWorkbook(file); ISheet sheet1 = hssfworkbook.GetSheet("Табель"); for (int i = 0; i

我在使用
NPOI
将数据写入Excel工作表单元格时遇到一些问题。 这是我的代码:

        FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);
        hssfworkbook = new HSSFWorkbook(file);
        ISheet sheet1 = hssfworkbook.GetSheet("Табель");
        for (int i = 0; i < table.Tables[0].Rows.Count; i++)
        {
            for (int j = 0; j < table.Tables[0].Columns.Count; j++)
            {
                if (table.Tables[0].Rows[i][j].ToString() != "0")
                    sheet1.GetRow(i+5).GetCell(j).SetCellValue(table.Tables[0].Rows[i][j].ToString());
                else
                    sheet1.GetRow(i+5).GetCell(j).SetCellValue("");
            }
        }
        string save_path = Server.MapPath("~/templates/report_new.xls");
        FileStream save_file = new FileStream(save_path, FileMode.Create);
        hssfworkbook.Write(save_file);
        save_file.Close();
FileStream file=newfilestream(路径,FileMode.Open,FileAccess.Read);
hssfworkbook=新的hssfworkbook(文件);
ISheet sheet1=hssfworkbook.GetSheet(“бббббб”);
对于(int i=0;i
我知道打开现有工作表的过程是有效的,因为在代码运行之后,我保存了一个名为“report\u new”的新工作表。它会正确打开现有工作表,因为新保存的文件中有相同的模板。但它没有我需要的数据。所以循环中的SetCellValue方法不起作用,也不向单元格写入数据。我检查了名为“table”的数据集表示的数据源是否为空,因此数据存在。但它不会将其写入细胞。
这里会出现什么问题?

尝试以下方法之一将数据写入excel的单元格

   var row = sheet.CreateRow(0);
   row.CreateCell(j).SetCellValue(table.Tables[0].Rows[i][j].ToString());

    // or 
    row.Cells[j].SetCellValue(table.Tables[0].Rows[i][j].ToString());


    // Or 


    ISheet sheet1 = hssfworkbook.GetSheet("Табель");
    for (int i = 0; i < table.Tables[0].Rows.Count; i++)
    {  
            HSSFRow row = (HSSFRow)sheet1.GetRow(i+5);

        for (int j = 0; j < table.Tables[0].Columns.Count; j++)
        {
    if (table.Tables[0].Rows[i][j].ToString() != "0")
        row.GetCell(j).SetCellValue(table.Tables[0].Rows[i][j].ToString());
    else
        row.GetCell(j).SetCellValue("");
        }
    }
var row=sheet.CreateRow(0);
row.CreateCell(j).SetCellValue(table.Tables[0].Rows[i][j].ToString());
//或
row.Cells[j].SetCellValue(table.Tables[0].Rows[i][j].ToString();
//或
ISheet sheet1=hssfworkbook.GetSheet(“бббббб”);
对于(int i=0;i
尝试以下方法之一写入excel的单元格

   var row = sheet.CreateRow(0);
   row.CreateCell(j).SetCellValue(table.Tables[0].Rows[i][j].ToString());

    // or 
    row.Cells[j].SetCellValue(table.Tables[0].Rows[i][j].ToString());


    // Or 


    ISheet sheet1 = hssfworkbook.GetSheet("Табель");
    for (int i = 0; i < table.Tables[0].Rows.Count; i++)
    {  
            HSSFRow row = (HSSFRow)sheet1.GetRow(i+5);

        for (int j = 0; j < table.Tables[0].Columns.Count; j++)
        {
    if (table.Tables[0].Rows[i][j].ToString() != "0")
        row.GetCell(j).SetCellValue(table.Tables[0].Rows[i][j].ToString());
    else
        row.GetCell(j).SetCellValue("");
        }
    }
var row=sheet.CreateRow(0);
row.CreateCell(j).SetCellValue(table.Tables[0].Rows[i][j].ToString());
//或
row.Cells[j].SetCellValue(table.Tables[0].Rows[i][j].ToString();
//或
ISheet sheet1=hssfworkbook.GetSheet(“бббббб”);
对于(int i=0;i
您可以创建函数来设置值(表、列、行、值)

这是样品

SetCellValue(sheet, cellRowIndex, cellColumnIndex, value);

private static void SetCellValue(ISheet worksheet, int rowPosition, int columnPosition, String value)
        {
            IRow dataRow = worksheet.GetRow(rowPosition) ?? worksheet.CreateRow(rowPosition);
            ICell cell = dataRow.GetCell(columnPosition) ?? dataRow.CreateCell(columnPosition);
            cell.SetCellValue(value);
        }

您可以创建函数来设置值(表、列、行、值)

这是样品

SetCellValue(sheet, cellRowIndex, cellColumnIndex, value);

private static void SetCellValue(ISheet worksheet, int rowPosition, int columnPosition, String value)
        {
            IRow dataRow = worksheet.GetRow(rowPosition) ?? worksheet.CreateRow(rowPosition);
            ICell cell = dataRow.GetCell(columnPosition) ?? dataRow.CreateCell(columnPosition);
            cell.SetCellValue(value);
        }