我正在使用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
我只希望将文本值传递到新单元格中。这可能吗?
谢谢
答案 0 :(得分:0)
此处的快速测试表明PasteSpecial(XlPasteType.xlPasteValuesAndNumberFormats)
保留了单元格的 text 格式。
或者,在粘贴后将格式设置为 :
newWorksheet.Range["A1"].PasteSpecial(XlPasteType.xlPasteValues,
XlPasteSpecialOperation.xlPasteSpecialOperationNone,
System.Type.Missing,
System.Type.Missing);
newWorksheet.Cells.NumberFormat = "@";
首先,我没有看到日期格式明确地转换为数字格式。我看到单元格格式已应用于目标单元格。就我而言,这是“一般”。