在文档中粘贴Excel表之前先“空化”字样式

时间:2019-02-04 09:18:31

标签: excel vba ms-word

我有一个代码(Full code can be found here),用于将数据从Excel插入到嵌入式Word文档中。它读取单元格命令(案例),并根据它们向Word输入数据(请参见“ main”,“ attachment”,“ table2”上方的屏幕截图)。问题是,如果没有为某些Case定义任何样式,那么它将采用以前的样式。

在复制Excel范围并将其插入到我的文档时遇到了问题。代码采用样式“附件”参数,并将具有预定义样式“附件”的表插入Word。如何在将范围插入Word女士之前使以前的样式参数为空?

这是我插入表的代码:

                  Set xlSht = Sheets("Service")
               Case "table2"
        xlSht.Range("B11:I20").Copy
     With wdRng
  .Paragraphs.Last.Range.PasteExcelTable False, False, False
  .Tables(.Tables.Count).AutoFitBehavior wdAutoFitWindow
End With

VBA代码结果: enter image description here

手动复制: enter image description here

在Excel中: enter image description here

1 个答案:

答案 0 :(得分:2)

如果您想“无效化”所有样式信息,请在粘贴表之前 进行。 Word中的“空”样式是普通样式;插入表格时,这种样式也是“最安全的” *。

以下代码段基于问题中的代码,首先应用样式,然后粘贴表格。

Future<List<Expense>> getExpensesByFundId(int fundId) async {
    Database db = await database;

    List<Expense> expenseList = List();

   // The await in the below line is what I'm talking about

    await db.query(expTable,where: '$expTable.$expFundId = $fundId')
        .then((List<Map<String,dynamic>> expList){
      expList.forEach((Map<String, dynamic> expMap){
        expenseList.add(Expense.fromMap(expMap));
      });
    });
    return expenseList;
  }

*除了段落和字符格式外,Word还具有表格样式。这些是确定表格式(与段落或字符格式相对)的特殊样式。只有在以普通样式设置格式的空段落中创建表时,才能正确应用这些内容。