当前位置: 首页 > 知识库问答 >
问题:

使用NPOI更新excel文件中的现有单元格值

赫连宏伯
2023-03-14

我创建了一个excel文件,并在(0,0)[行,单元格]中插入了一个新值作为Hello。第二次打开同一个excel文件,同一张表,用另一个字符串值更新了同一个(0,0)单元格。

代码正在成功运行,没有任何错误,但文件已损坏,无法打开。

代码

namespace PractiseProject
{
    public static class ExcelNPOI
    {
        static IWorkbook workbook;
        static ISheet sheet;
        static IRow row;
        static ICell cell;
        static string file = "C:/Users/MSTEMP/Documents/Files/Test.xlsx";
        static string sheetName = "Testcase";

        public static void createExcel()
        {
            string firstValue = "Hello";
            if (!File.Exists(file))
            {
                using (FileStream str = new FileStream(file, FileMode.Create, FileAccess.Write))
                {
                    workbook = new XSSFWorkbook();
                    sheet = workbook.CreateSheet(sheetName);
                    row = sheet.CreateRow(0);
                    cell = row.CreateCell(0);
                    cell.SetCellValue(firstValue);
                    workbook.Write(str);
                    str.Close();
                }
            }
            else
            {
                using (FileStream rstr = new FileStream(file, FileMode.Open, FileAccess.Read))
                {
                    workbook = new XSSFWorkbook(rstr);
                    sheet = workbook.GetSheet(sheetName);

                    using (FileStream wstr = new FileStream(file, FileMode.Open, FileAccess.ReadWrite))
                    {
                        string secondValue = "changes";

                        row = sheet.GetRow(0);
                        cell = row.GetCell(0);
                        cell.SetCellValue(secondValue);
                        Debug.Print(cell.ToString());
                        workbook.Write(wstr);
                        wstr.Close();
                    }
                    rstr.Close();
                }
            }
        }
    }
}

在调试模式下,在设置第二个值之后。SetCellValue(第二个值);我可以通过Debug查看该值。打印(cell. ToString());并且该值在控制台中打印。但是当写入工作簿时,文件会损坏。指导我通过联系。

共有1个答案

那利
2023-03-14

我在第二部分使用语句时犯了一个错误。。

之前:

using (FileStream wstr = new FileStream(file, FileMode.Open, FileAccess.ReadWrite))

现在:

 using (FileStream wstr = new FileStream(file, FileMode.Create, FileAccess.Write))

我更改了FileMode和FileAccess类型,现在它工作正常。

 类似资料:
  • 我试图用Java(Apache POI)更新一个现有excel文件中的空单元格,这是我写的代码,我没有得到任何错误,值也没有改变。 谢谢:)

  • 我正在使用apache POI更改excel表中的单元格。更改值后,与已更改的单元格对应的公式的单元格不会更新。 当我进入excel并单击带有公式的单元格,然后在函数栏中单击时,公式会更新。 A1仍然等于3,直到我点击那个单元格。 刷新工作簿或工作表也不起作用。这是excel或POI的问题吗?有人能想出一个变通办法吗?

  • 我有一个预定义的excel文件,这是一种形式,其中大部分的信息已经提到,但我必须只输入姓名,地址等细节从我的应用程序用Java。 我可以存储单元格(如A12、B20等),并使用Apache POI库和方法轻松地更新这些单元格。但我希望它是动态的。例如,如果用户将名称单元格从A12更改为B12,Java代码不应该被修改。

  • 我正在尝试编写一个Java程序,该程序将每天运行(使用任务调度器),并在每次运行时向Excel电子表格中添加一列。我遇到的问题是,它只是重新写入文件,而不是附加到文件中。我正在使用Apache POI,以下是相关代码:

  • 我使用NPOI dll在C#中对excel表进行genrating。当我以编程方式在某个单元格上应用公式并导出excel时,在excel表的保护模式下,所有具有公式的单元格都显示为“0”值。但是当我编辑这个excel时,所有的公式都能在这些单元格上正常工作。是否有任何解决方案,从应用公式也可以工作在保护模式?

  • 我在把数据写到excel文件时遇到了问题。我使用的是apache POI 4.1.2版本库。下面是示例代码。 在excel文件中保存的最后一列单元格中,以前的单元格保持为空白。请帮忙,如果我做错了什么,请告诉我?