OpenXml and strange behavior
I have the following code:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
and the following excel file:
but this code is crashed with
I debug it and look at CellValue
(my v
variable) for every cell of row #2.
cell[0] = 33
(and it get correct value PQ-10387
)
cell1 = 22
cell[2] = 198
but
cell[3] = 310
and this value is the same value of cell! What is wrong in my code?
c# excel cell openxml
add a comment |
I have the following code:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
and the following excel file:
but this code is crashed with
I debug it and look at CellValue
(my v
variable) for every cell of row #2.
cell[0] = 33
(and it get correct value PQ-10387
)
cell1 = 22
cell[2] = 198
but
cell[3] = 310
and this value is the same value of cell! What is wrong in my code?
c# excel cell openxml
add a comment |
I have the following code:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
and the following excel file:
but this code is crashed with
I debug it and look at CellValue
(my v
variable) for every cell of row #2.
cell[0] = 33
(and it get correct value PQ-10387
)
cell1 = 22
cell[2] = 198
but
cell[3] = 310
and this value is the same value of cell! What is wrong in my code?
c# excel cell openxml
I have the following code:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
and the following excel file:
but this code is crashed with
I debug it and look at CellValue
(my v
variable) for every cell of row #2.
cell[0] = 33
(and it get correct value PQ-10387
)
cell1 = 22
cell[2] = 198
but
cell[3] = 310
and this value is the same value of cell! What is wrong in my code?
c# excel cell openxml
c# excel cell openxml
asked Nov 25 '18 at 14:59
Oleg ShOleg Sh
2,99973781
2,99973781
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Found, that when cell stores a number, then CellValue
has value of cell and DataType
is null, otherwise DataType
has value and CellValue
stores index. So, this code works fine:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
if (cells[c].DataType != null)
{
if (cells[c].CellValue != null)
{
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
}
else
text = cells[c].CellValue?.Text;
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53468762%2fopenxml-and-strange-behavior%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Found, that when cell stores a number, then CellValue
has value of cell and DataType
is null, otherwise DataType
has value and CellValue
stores index. So, this code works fine:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
if (cells[c].DataType != null)
{
if (cells[c].CellValue != null)
{
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
}
else
text = cells[c].CellValue?.Text;
add a comment |
Found, that when cell stores a number, then CellValue
has value of cell and DataType
is null, otherwise DataType
has value and CellValue
stores index. So, this code works fine:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
if (cells[c].DataType != null)
{
if (cells[c].CellValue != null)
{
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
}
else
text = cells[c].CellValue?.Text;
add a comment |
Found, that when cell stores a number, then CellValue
has value of cell and DataType
is null, otherwise DataType
has value and CellValue
stores index. So, this code works fine:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
if (cells[c].DataType != null)
{
if (cells[c].CellValue != null)
{
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
}
else
text = cells[c].CellValue?.Text;
Found, that when cell stores a number, then CellValue
has value of cell and DataType
is null, otherwise DataType
has value and CellValue
stores index. So, this code works fine:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
if (cells[c].DataType != null)
{
if (cells[c].CellValue != null)
{
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
}
else
text = cells[c].CellValue?.Text;
answered Nov 25 '18 at 15:18
Oleg ShOleg Sh
2,99973781
2,99973781
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53468762%2fopenxml-and-strange-behavior%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown