簡體   English   中英

如何從 Excel 單元格中獲取換行文本?

[英]How to get wrapped text from Excel cell?

我想知道如何使用 ClosedXML 從 Excel 單元格中獲取換行文本。

(ClosedXML版本為0.95.4,使用C#[Visualstudio 2017])

例如:excel 單元格數據(文本)如下

abc
xyz

我想

abc
xyz

(=包裝文本),但我得到abcxyz (=無包裝文本)。

我嘗試了幾種方法(如下),結果都是一樣的。

tgtcell.RichText
tgtcell.GetString()
tgtcell.Value.ToString()

等等

誰能告訴我如何得到它?

現在原因已經知道了。 在輸入wrapped text的cell中,混入了unwrapped的。(wrapped只能通過指定style format。)可惜我測試的是cell,所以看起來不可讀。

(這更像是一個擴展評論,而不是一個明確的答案)

我創建了一個 Excel 文件,我在其中的單元格 A1 中鍵入了ABC<Alt>+<Enter>xyz 這將ABC放在一行上,將xyz放在它下面(都在同一個單元格中)。 然后我保存關閉了Excel。

然后我在微軟的“OpenXML Productivity Tool”中打開了這個文件(不幸的是,它已經從“Microsoft.com”中刪除,但仍然可以在 GitHub 上找到)。

如果查看文件的共享字符串部分,我可以看到它是 XML:

<x:sst count="1" uniqueCount="1" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  <x:si>
    <x:t>ABCxyz</x:t>
  </x:si>
</x:sst>

但是,如果我查看反映的代碼(反映到 C# 中),我會看到:

public class GeneratedClass
{
    // Creates an SharedStringTable instance and adds its children.
    public SharedStringTable GenerateSharedStringTable()
    {
        SharedStringTable sharedStringTable1 = new SharedStringTable(){ Count = (UInt32Value)1U, UniqueCount = (UInt32Value)1U };

        SharedStringItem sharedStringItem1 = new SharedStringItem();
        Text text1 = new Text();
        text1.Text = "ABC\nxyz";

        sharedStringItem1.Append(text1);

        sharedStringTable1.Append(sharedStringItem1);
        return sharedStringTable1;
    }
}

所以它看起來像 Excel 在單個單元格的行之間存儲一個 Unix 換行符。 我不知道為什么它沒有出現在 XML 中。

我遠不是 OpenXML 專家,但我已經成功地使用過它幾次(主要是為了生成文件,而不是解析它們)。 我從未使用過 ClosedXML。 我不知道Wrapped Text是什么意思(您的解釋也沒有幫助)。 但是,我可以在文件中看到兩行文本。

我不知道這是否會對您有所幫助 - 我希望如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM