PasteSpecial函数不复制日期-VSTO

时间:2019-10-25 06:33:04

标签: c# excel vsto

我正在使用VSTO插件,试图将一张纸的值复制到另一张纸上,但仅粘贴为文本。在excel中,我可以手动打开一个新工作表,将单元格设置为文本格式,然后复制数据。我正在尝试以编程方式执行此操作。这是一些代码:

    Worksheet currentSheet; // This is the sheet I'm copying from
    Excel.Range currentRange = currentSheet.Cells.Application.Selection.SpecialCells(
                                 Excel.XlCellType.xlCellTypeVisible,
                                 Type.Missing);

    Excel.Worksheet newWorksheet; // This is the sheet I'm copyng to
    newWorksheet.Cells.NumberFormat = "@"; // set the format of cells to text

    currentRange.Copy(); // Copy the data
    newWorksheet.Range["A1"].PasteSpecial(XlPasteType.xlPasteValues,
    XlPasteSpecialOperation.xlPasteSpecialOperationNone,
    System.Type.Missing,
    System.Type.Missing);

这行得通,但是,有时候我要从中复制的数据将包含日期(例如2019-10-01),当我将其复制到新工作表时,即使我使用XlPasteType.xlPasteValues我只希望将文本值传递到新单元格中。这可能吗? 谢谢

1 个答案:

答案 0 :(得分:0)

此处的快速测试表明PasteSpecial(XlPasteType.xlPasteValuesAndNumberFormats)保留了单元格的 text 格式。

或者,在粘贴后将格式设置为

newWorksheet.Range["A1"].PasteSpecial(XlPasteType.xlPasteValues,
  XlPasteSpecialOperation.xlPasteSpecialOperationNone,
  System.Type.Missing,
  System.Type.Missing);
newWorksheet.Cells.NumberFormat = "@"; 

首先,我没有看到日期格式明确地转换为数字格式。我看到单元格格式已应用于目标单元格。就我而言,这是“一般”。