zoukankan      html  css  js  c++  java
  • Excel区域赋值后,区域的格式无法立即显示的解决方案

    今天接到一个技术QA,说是把excel中一个区域的格式设置成yyyy/MM/dd hh:mm,然后把格式是yyyy/MM/dd hh:mm:ss的数据填充进去,但是格式没有立即变化,必须逐个单元格双击,才能变成其设置的格式。试来试去,发现了一个方法。首先,把原始数据放到一块空白的无用的区域中,然后用PasteSpecial方法来粘贴到目标区域,然后在删除这个临时的数据区域。这样就能达到数据立刻能转变成所在单元格的格式了。PasteSpecial(XlPasteType.xlPasteValues, XlPasteSpecialOperation.xlPasteSpecialOperationAdd, false, false);

    主要是得把参数一设置成只粘贴值,第二个参数设置成加运算。其实这个方法就是对应你在EXCEL中右键-〉选择性粘贴,弹出的对话框里那些选项就是对应了方法中的各个位置的参数。

    如果使用Paste方法的话就是把原数据的格式和值都粘贴过来。

    NamedRange.PasteSpecial 方法

     

    将剪贴板上 Microsoft.Office.Interop.Excel.Range 对象的内容粘贴到 NamedRange 控件中。

    命名空间:  Microsoft.Office.Tools.Excel
    程序集:  Microsoft.Office.Tools.Excel.v9.0(在 Microsoft.Office.Tools.Excel.v9.0.dll 中)

    复制
    public Object PasteSpecial(
    	XlPasteType Paste,
    	XlPasteSpecialOperation Operation,
    	Object SkipBlanks,
    	Object Transpose
    )
    

    参数

    Paste
    类型:Microsoft.Office.Interop.Excel.XlPasteType

    范围中要粘贴的部分。

    可以是下列 XlPasteType 值之一:

    • xlPasteAll

    • xlPasteAllExceptBorders

    • xlPasteColumnWidths

    • xlPasteComments

    • xlPasteFormats

    • xlPasteFormulas

    • xlPasteFormulasAndNumberFormats

    • xlPasteValidation

    • xlPasteValues

    • xlPasteValuesAndNumberFormats

    Operation
    类型:Microsoft.Office.Interop.Excel.XlPasteSpecialOperation

    粘贴操作。

    可以是下列 XlPasteSpecialOperation 值之一:

    • xlPasteSpecialOperationAdd

    • xlPasteSpecialOperationDivide

    • xlPasteSpecialOperationMultiply

    • xlPasteSpecialOperationNone

    • xlPasteSpecialOperationSubtract

    SkipBlanks
    类型:System.Object

    如果不将剪贴板上该范围中的空单元格粘贴到目标范围,则为 true。默认值为 false

    Transpose
    类型:System.Object

    如果在粘贴该范围时对行和列进行转置,则为 true。默认值为 false

    返回值

    类型:System.Object
    备注

    示例

    下面的代码示例使用 Copy 方法将名为 NamedRange1NamedRange 控件的内容复制到剪贴板,然后使用 PasteSpecial 方法将这些内容粘贴到名为 NamedRange2NamedRange 控件中。将 Operation 参数设置为 xlPasteSpecialOperationAdd,以便将 NamedRange1 中每个单元格的内容添加到 NamedRange2 中相应的单元格。

    此示例针对的是文档级自定义项。

    C#
    VB
    private void CopyAndPasteSpecialRange()
    {
        Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
            this.Controls.AddNamedRange(this.Range["A1", "A3"],
            "namedRange1");
        namedRange1.Value2 = 22;

        Microsoft.Office.Tools.Excel.NamedRange namedRange2 =
            this.Controls.AddNamedRange(this.Range["C1", "C3"],
            "namedRange2");
        namedRange2.Value2 = 5;

        // Copy the contents of namedRange1 to the clipboard, and then
        // paste the contents into namedRange2, adding each to
        // the value in namedRange2.
        namedRange1.Copy(missing);
        namedRange2.PasteSpecial(Excel.XlPasteType.xlPasteAll,
            Excel.XlPasteSpecialOperation.xlPasteSpecialOperationAdd,
            false,
            false);
    }


  • 相关阅读:
    Windows性能计数器应用
    Azure Oracle Linux VNC 配置
    Azure 配置管理系列 Oracle Linux (PART6)
    Azure 配置管理系列 Oracle Linux (PART5)
    Azure 配置管理系列 Oracle Linux (PART4)
    Azure 配置管理系列 Oracle Linux (PART3)
    Azure 配置管理系列 Oracle Linux (PART2)
    vagrant多节点配置
    docker基本操作
    LINUX开启允许对外访问的网络端口命令
  • 原文地址:https://www.cnblogs.com/renfeng/p/2530801.html
Copyright © 2011-2022 走看看