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);
    }


  • 相关阅读:
    Unity 移动端的复制这么写
    Unity如何管理住Android 6.0 调皮的权限
    谷歌商店Apk下载器
    Unity编辑器下重启
    git pull error
    如何简单的实现新手引导之UGUI篇
    linux系统安装python3.5
    Grafana设置mysql为数据源
    hyper -v 虚拟机(win_server)忘记密码重置
    zabbix报错:the information displayed may not be current
  • 原文地址:https://www.cnblogs.com/renfeng/p/2530801.html
Copyright © 2011-2022 走看看