npoi icon indicating copy to clipboard operation
npoi copied to clipboard

sheet.CopyTo may partially corrupt the xls file

Open GuangZhouDekang opened this issue 2 years ago • 2 comments

使用 sheet.CopyTo 会造成,生成xls文件部分报损坏,或者文件无法在受保护的视图中打开该文件。 环境: Vs 2022 C# Excel 2016

通过以下代码,会出现生成的文件,部分损坏,或者文件无法在受保护的视图中打开。但更换一个Excel文件,又可以正常生成,这是什么原因造成?

private void DoCopySheet() { string tplFullname = @"template.xls";
System.IO.FileStream tplFileStream = new System.IO.FileStream(tplFullname, System.IO.FileMode.Open, System.IO.FileAccess.Read); IWorkbook workbook = new HSSFWorkbook(tplFileStream); tplFileStream.Close();

        ISheet sheet = workbook.GetSheetAt(0);           
        workbook.SetSheetName(0, "FirstSheet");

        for (int i = 1; i <= 2; i++)
        {               
           string newSheetName = i.ToString();
           sheet.CopyTo(workbook, newSheetName, true, true);               
        }
        workbook.SetSheetName(0, 0.ToString());

        for (int i = 0; i <= workbook.NumberOfSheets - 1; i++)
            workbook.GetSheetAt(i).IsSelected = false;
        // 设置当前激活的工作表
        workbook.GetSheetAt(0).IsSelected = true;
        workbook.SetActiveSheet(0);

      
        // 保存文件
        var file = new System.IO.FileStream("CopySheet.xls", System.IO.FileMode.Create);
        workbook.Write(file);
        file.Close();
    }

template.xls CopySheet.xls

GuangZhouDekang avatar May 23 '22 09:05 GuangZhouDekang

Which version of NPOI are you using?

tonyqus avatar May 29 '22 21:05 tonyqus

Version 2.5.6.0

GuangZhouDekang avatar May 30 '22 01:05 GuangZhouDekang