linq を使用して Excel XML の読み取りと変更を試みています。最初にDatagridという名前のワークシートを取得し ます。そこから最初の行を選択します (Index を使用)。次に、この行でプロパティがatrHeaderであるセルを見つけたいと思います。
Dim dg = From item In root...<ss:Worksheet> Select item Where item.@ss:Name = "Datagrid"
Dim r = From item In dg...<Table>...<Row> Select item Where item.@ss:Index = 1 row
Dim cell = From item In r...<Cell> Select item Where item.@ecProperty = "atrHeader"
この時点ですべてが良好です。今私がやりたいことは、新しいセルを作成し、見つかったセルの前に挿入することです。
Dim newCell As New XElement("cell", 123)
cell.First.AddBeforeSelf(newCell)
ファイルを保存すると、あるべき場所に新しい値が表示されます
<cell xmlns="">123</cell>
しかし、私はそれが好きである必要があります
<ss:Cell>123</ss:Cell>
新しい要素を作成するときに「ss:cell」を使用しようとすると、「:」を含めることができないという RTE が表示されます。
コードの先頭に既に次の imports ステートメントがあります。
Imports <xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
初期 XML
<ss:Worksheet ss:Name="Datagrid">
<ss:Table ss:ExpandedColumnCount="17" ss:ExpandedRowCount="5" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15">
<ss:Row ss:Index="1" ss:AutoFitHeight="0">
<ss:Cell ecProperty="model_name" ss:StyleID="styleReadOnly">
<ss:Data ss:Type="String">Joe's Project</ss:Data>
</ss:Cell>
<ss:Cell ss:Index="6" ss:StyleID="styleColumnDescription">
<ss:Data ss:Type="String">Type</ss:Data>
</ss:Cell>
<ss:Cell ecProperty="atrHeader" ss:Index="7">
<ss:Data ss:Type="String">blank</ss:Data>
</ss:Cell>
</ss:Row>
<ss:Row ss:AutoFitHeight="0" ss:Index="2">
<ss:Cell ecProperty="email_address" ss:StyleID="styleBiDirectional">
<ss:Data ss:Type="String">joe@ec.com</ss:Data>
</ss:Cell>
<ss:Cell ss:Index="6" ss:StyleID="styleColumnDescription">
<ss:Data ss:Type="String">Full Path</ss:Data>
</ss:Cell>
<ss:Cell ecProperty="atrHeader" ss:Index="7">
<ss:Data ss:Type="String">blank</ss:Data>
</ss:Cell>
</ss:Row>
</ss:Table>
</ss:Worksheet>