Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

fix issue 1676#1701

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
Siemienik merged 13 commits intoexceljs:masterfromskypesky:master
Nov 21, 2021
Merged
Show file tree
Hide file tree
Changes from12 commits
Commits
Show all changes
13 commits
Select commitHold shift + click to select a range
56f5a75
Merge remote-tracking branch 'source/master'
skypeskyOct 10, 2020
64dd9f2
Merge remote-tracking branch 'source/master'
skypeskyOct 10, 2020
f892881
Merge remote-tracking branch 'source/master'
skypeskyNov 5, 2020
0ef8b22
Merge remote-tracking branch 'source/master'
skypeskyDec 1, 2020
8ddfad4
Merge branch 'master' of https://github.com/exceljs/exceljs
skypeskyApr 22, 2021
6463bbc
Merge branch 'master' of https://github.com/exceljs/exceljs
skypeskyApr 28, 2021
be63395
fix issue 1676 Broken internal link on Google sheets
skypeskyMay 5, 2021
59036b7
Update hyperlink-xform.js
skypeskyMay 6, 2021
dabaf05
Merge branch 'master' into master
skypeskyJun 18, 2021
66e09b8
Merge branch 'master' into master
SiemienikNov 18, 2021
d7b6798
fix(issue 1676): add unit test
Nov 20, 2021
65bfb13
Merge branch 'master' into master
Nov 20, 2021
364a01b
Merge branch 'master' into master
SiemienikNov 21, 2021
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
29 changes: 24 additions & 5 deletionslib/xlsx/xform/sheet/hyperlink-xform.js
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,11 +6,20 @@ class HyperlinkXform extends BaseXform {
}

render(xmlStream, model) {
xmlStream.leafNode('hyperlink', {
ref: model.address,
'r:id': model.rId,
tooltip: model.tooltip,
});
if (this.isInternalLink(model)) {
xmlStream.leafNode('hyperlink', {
ref: model.address,
'r:id': model.rId,
tooltip: model.tooltip,
location: model.target,
});
} else {
xmlStream.leafNode('hyperlink', {
ref: model.address,
'r:id': model.rId,
tooltip: model.tooltip,
});
}
}

parseOpen(node) {
Expand All@@ -20,6 +29,11 @@ class HyperlinkXform extends BaseXform {
rId: node.attributes['r:id'],
tooltip: node.attributes.tooltip,
};

// This is an internal link
if (node.attributes.location) {
this.model.target = node.attributes.location;
}
return true;
}
return false;
Expand All@@ -30,6 +44,11 @@ class HyperlinkXform extends BaseXform {
parseClose() {
return false;
}

isInternalLink(model) {
// @example: Sheet2!D3, return true
return model.target && /^[^!]+![a-zA-Z]+[\d]+$/.test(model.target);
}
}

module.exports = HyperlinkXform;
12 changes: 12 additions & 0 deletionsspec/unit/xlsx/xform/sheet/hyperlink-xform.spec.js
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,18 @@ const expectations = [
xml: '<hyperlink ref="B6" r:id="rId1"/>',
tests: ['render', 'renderIn', 'parse'],
},
{
title: 'Internal Link',
create() {
return new HyperlinkXform();
},
preparedModel: {address: 'B6', rId: 'rId1', target: 'sheet1!B2'},
get parsedModel() {
return this.preparedModel;
},
xml: '<hyperlink ref="B6" r:id="rId1" location="sheet1!B2"/>',
tests: ['render', 'renderIn', 'parse'],
},
];

describe('HyperlinkXform', () => {
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp