public void TestRepeatingRowsAndColumsNames() { // First Test that setting RR&C for same sheet more than once only Creates a // single Print_Titles built-in record HSSFWorkbook wb = new HSSFWorkbook(); NPOI.SS.UserModel.Sheet sheet = wb.CreateSheet("FirstSheet"); // set repeating rows and columns twice for the first sheet for (int i = 0; i < 2; i++) { wb.SetRepeatingRowsAndColumns(0, 0, 0, 0, 3 - 1); sheet.CreateFreezePane(0, 3); } Assert.AreEqual(1, wb.NumberOfNames); NPOI.SS.UserModel.Name nr1 = wb.GetNameAt(0); Assert.AreEqual("Print_Titles", nr1.NameName); if (false) { // TODO - full column references not rendering properly, absolute markers not present either Assert.AreEqual("FirstSheet!$A:$A,FirstSheet!$1:$3", nr1.RefersToFormula); } else { Assert.AreEqual("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.RefersToFormula); } // Save and re-Open HSSFWorkbook nwb = HSSFTestDataSamples.WriteOutAndReadBack(wb); Assert.AreEqual(1, nwb.NumberOfNames); nr1 = nwb.GetNameAt(0); Assert.AreEqual("Print_Titles", nr1.NameName); Assert.AreEqual("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.RefersToFormula); // Check that setting RR&C on a second sheet causes a new Print_Titles built-in // name to be Created sheet = nwb.CreateSheet("SecondSheet"); nwb.SetRepeatingRowsAndColumns(1, 1, 2, 0, 0); Assert.AreEqual(2, nwb.NumberOfNames); NPOI.SS.UserModel.Name nr2 = nwb.GetNameAt(1); Assert.AreEqual("Print_Titles", nr2.NameName); Assert.AreEqual("SecondSheet!B:C,SecondSheet!$A$1:$IV$1", nr2.RefersToFormula); if (false) { // In case you fancy Checking in excel, to ensure it // won't complain about the file now try { string tmppath = NPOI.Util.TempFile.GetTempFilePath("POI-45126-", ".xls"); FileStream fout = new FileStream(tmppath, FileMode.OpenOrCreate); nwb.Write(fout); fout.Close(); Console.WriteLine("Check out " + Path.GetFullPath(tmppath)); } catch (IOException) { throw; } } }