私はデータシートの作成を含むプロジェクトに取り組んでいます。MSDN から提供されたコードに従って docx ファイルにテーブルを作成できましたが、作成したテーブルにスタイル (境界線をなし、シェーディング、セル幅など) を適用しようとすると、追加されません。 .
したがって、使用してからtable.RemoveAllChildren
new を追加する必要があると思いますstyle
。しかし、そうすると、テーブル全体が削除されるため、テーブルを再作成する必要があります。もっと良い方法があるはずです。お知らせ下さい。
以下は、1 つのセル テーブルを含むサンプル コード iIhave です。ダークブルーの陰影、テーブルの境界線を削除し、セル幅を設定し、テキストを変更しようとしています。
public void docHeaderTableVal(string FileLocation, string replacingVal, int tableNum, int rowNum, int cellNum) //replace a value
{
try
{
using (var doc = WordprocessingDocument.Open(FileLocation, true))
{
// Find the first table in the document.
Table table =
doc.MainDocumentPart.Document.Body.Elements<Table>().ElementAt(tableNum);
TableProperties props = new TableProperties(
new TableBorders(
new TopBorder
{
Val = new EnumValue<BorderValues>(BorderValues.None),
//Size = 10
},
new BottomBorder
{
Val = new EnumValue<BorderValues>(BorderValues.None),
//Size = 10
},
new LeftBorder
{
Val = new EnumValue<BorderValues>(BorderValues.None),
//Size = 10
},
new RightBorder
{
Val = new EnumValue<BorderValues>(BorderValues.None),
//Size = 10
},
new InsideHorizontalBorder
{
Val = new EnumValue<BorderValues>(BorderValues.None),
//Size = 10
},
new InsideVerticalBorder
{
Val = new EnumValue<BorderValues>(BorderValues.None),
//Size = 10
}
)
);
table.AppendChild<TableProperties>(props);
TableRow row = table.Elements<TableRow>().ElementAt(rowNum);
TableCell cell = row.Elements<TableCell>().ElementAt(cellNum);
cell.RemoveAllChildren();
//cell.TableCellProperties.TableCellWidth.Width = "2500";
//finding first run and its first text then replace with passed-in text.
Paragraph p = new Paragraph() { RsidParagraphAddition = "004F7104", RsidParagraphProperties = "008F2986", RsidRunAdditionDefault = "004F7104" };
ParagraphProperties pPr = new ParagraphProperties();
Justification just1 = new Justification() { Val = JustificationValues.Center };
pPr.Append(just1);
Run r = new Run();
RunProperties rProp = new RunProperties(); //making an instance of run property
RunFonts rFont = new RunFonts();
FontSize size = new FontSize();
Color color = new Color() { Val = "#FFFFFF"};
Bold bld = new Bold();
Italic italic = new Italic();
rFont.Ascii = "Arial Black";
size.Val = new StringValue("32");
rProp.Append(rFont, size, color, bld, italic);
r.PrependChild<RunProperties>(rProp);
Text t = new Text(replacingVal);
r.Append(t);
p.Append(pPr);
p.Append(r);
//back ground shading for the title cell;
cell.AppendChild(new TableCellProperties(new Shading { Val = ShadingPatternValues.Clear, Color = "auto", Fill = "##17365d" }));
cell.Append(p);
}
}
catch
{
MessageBox.Show("Can not replace table value due to file open error.");
}
}