Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions ooxml/XSSF/UserModel/XSSFWorkbook.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ limitations under the License.
using NPOI.OpenXml4Net.Exceptions;
using NPOI.SS;
using System.Globalization;
using System.Linq;

namespace NPOI.XSSF.UserModel
{
Expand Down Expand Up @@ -261,7 +262,7 @@ public XSSFWorkbook(Stream is1)
public XSSFWorkbook(FileInfo file)
: this(OPCPackage.Open(file))
{

}

/**
Expand Down Expand Up @@ -928,7 +929,7 @@ public ISheet CreateSheet(String sheetname)
private void ValidateSheetName(String sheetName)
{
if (ContainsSheet(sheetName, sheets.Count))
throw new ArgumentException(string.Format("The workbook already contains a sheet named '{0}'",sheetName));
throw new ArgumentException(string.Format("The workbook already contains a sheet named '{0}'", sheetName));
}
protected XSSFDialogsheet CreateDialogsheet(String sheetname, CT_Dialogsheet dialogsheet)
{
Expand Down Expand Up @@ -1271,7 +1272,7 @@ public void RemoveName(int nameIndex)
public void RemoveName(String name)
{
List<XSSFName> names = namedRangesByName[name.ToLower()];
if (names.Count==0)
if (names.Count == 0)
{
throw new ArgumentException("Named range was not found: " + name);
}
Expand All @@ -1280,7 +1281,7 @@ public void RemoveName(String name)

private bool RemoveMapping(string key, XSSFName item)
{
if(namedRangesByName.ContainsKey(key))
if (namedRangesByName.ContainsKey(key))
{
var values = namedRangesByName[key];
return values.Remove(item);
Expand Down Expand Up @@ -1571,7 +1572,7 @@ public XSSFName GetBuiltInName(String builtInCode, int sheetNumber)
{
if (!namedRangesByName.ContainsKey(builtInCode.ToLower()))
return null;

foreach (XSSFName name in namedRangesByName[builtInCode.ToLower()])
{
if (name.SheetIndex == sheetNumber)
Expand Down Expand Up @@ -1644,7 +1645,7 @@ public void SetSheetName(int sheetIndex, String sheetname)

// Check it isn't already taken
if (ContainsSheet(sheetname, sheetIndex))
throw new ArgumentException(string.Format("The workbook already contains a sheet named '{0}'",sheetname));
throw new ArgumentException(string.Format("The workbook already contains a sheet named '{0}'", sheetname));

// Update references to the name
XSSFFormulaUtils utils = new XSSFFormulaUtils(this);
Expand Down Expand Up @@ -2219,7 +2220,7 @@ public void RemovePivotTables()
foreach (var xssfPivotTable in pivotTables)
{
var sheet = xssfPivotTable.GetParent();
if ( sheet is XSSFSheet )
if (sheet is XSSFSheet)
{
sheet.RemoveRelation(xssfPivotTable);
}
Expand All @@ -2229,7 +2230,7 @@ public void RemovePivotTables()
{
if (poixmlDocumentPart is XSSFPivotCacheDefinition)
{
var pivotCacheDefinition = (XSSFPivotCacheDefinition)poixmlDocumentPart;
var pivotCacheDefinition = (XSSFPivotCacheDefinition)poixmlDocumentPart;
RemoveRelation(pivotCacheDefinition);
}
}
Expand Down Expand Up @@ -2587,8 +2588,16 @@ public bool IsReadOnly

public bool Remove(ISheet item)
{
string sheetName = item.SheetName;
int idx = sheets.FindIndex(_ => _.SheetName.Equals(sheetName, StringComparison.CurrentCultureIgnoreCase));

return this.sheets.Remove((XSSFSheet)item);
if (idx != -1)
{
RemoveSheetAt(idx);
return true;
}

return false;
}

#endregion
Expand Down
20 changes: 20 additions & 0 deletions testcases/ooxml/XSSF/UserModel/TestXSSFWorkbook.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1196,5 +1196,25 @@ public void TestRemoveSheet()
wb.Close();
}

[Test]
public void TestRemoveSheetMethod()
{
using (XSSFWorkbook wb = new XSSFWorkbook())
{
var sheet1 = wb.CreateSheet("Sheet1");
var sheet2 = wb.CreateSheet("Sheet2");

Assert.True(wb.Remove(sheet2));
Assert.AreEqual(1, wb.NumberOfSheets);
Assert.AreEqual("Sheet1", wb.GetSheetName(0));
Assert.AreEqual(sheet1, wb.GetSheet("Sheet1"));

using (var wbCopy = XSSFTestDataSamples.WriteOutAndReadBack(wb))
{
Assert.AreEqual(1, wbCopy.NumberOfSheets);
Assert.AreEqual("Sheet1", wb.GetSheetName(0));
}
}
}
}
}