Skip to content
Open
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
4 changes: 3 additions & 1 deletion lib/doc/workbook.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,9 @@ class Workbook {
return this._worksheets[id];
}
if (typeof id === 'string') {
return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
// Case-insensitive to match addWorksheet's uniqueness rule (and Excel itself).
const target = id.toLowerCase();
return this._worksheets.find(ws => ws && ws.name.toLowerCase() === target);
}
return undefined;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
const ExcelJS = verquire('exceljs');

describe('github issues', () => {
describe('issue 3028 - workbook.getWorksheet should be case-insensitive', () => {
it('returns the same worksheet regardless of name casing', () => {
const wb = new ExcelJS.Workbook();
const ws = wb.addWorksheet('TestSheet');

expect(wb.getWorksheet('TestSheet')).to.equal(ws);
expect(wb.getWorksheet('testsheet')).to.equal(ws);
expect(wb.getWorksheet('TESTSHEET')).to.equal(ws);
expect(wb.getWorksheet('tEsTsHeEt')).to.equal(ws);
});

it('returns undefined for genuinely unknown names', () => {
const wb = new ExcelJS.Workbook();
wb.addWorksheet('TestSheet');

expect(wb.getWorksheet('OtherSheet')).to.equal(undefined);
});

it('preserves numeric id lookup', () => {
const wb = new ExcelJS.Workbook();
const ws = wb.addWorksheet('TestSheet');

expect(wb.getWorksheet(ws.id)).to.equal(ws);
});

it('preserves the no-arg first-worksheet shortcut', () => {
const wb = new ExcelJS.Workbook();
const ws = wb.addWorksheet('TestSheet');

expect(wb.getWorksheet()).to.equal(ws);
});

it('aligns getWorksheet with addWorksheet case-insensitive uniqueness', () => {
// addWorksheet rejects "testsheet" as a duplicate of "TestSheet";
// therefore getWorksheet("testsheet") must locate the existing sheet.
const wb = new ExcelJS.Workbook();
const ws = wb.addWorksheet('TestSheet');

expect(() => wb.addWorksheet('testsheet')).to.throw();
expect(wb.getWorksheet('testsheet')).to.equal(ws);
});
});
});