C# 使用c在Excel范围内剪切和粘贴列#
我试图在excel工作表中将B列移到Q列前面,作为我正在编写的报告的一部分。我在VBA方面有经验,但在c#方面的经验相对较少,所以我在Google上花了最后一个小时,找不到解决方案,我觉得这应该很简单,但我不太明白 方法一,它导致“插入Range类的方法失败”消息C# 使用c在Excel范围内剪切和粘贴列#,c#,excel,C#,Excel,我试图在excel工作表中将B列移到Q列前面,作为我正在编写的报告的一部分。我在VBA方面有经验,但在c#方面的经验相对较少,所以我在Google上花了最后一个小时,找不到解决方案,我觉得这应该很简单,但我不太明白 方法一,它导致“插入Range类的方法失败”消息 Excel.Range rngCut1 = JobLabourSheet.get_Range("B:B", Type.Missing); Excel.Range rngPaste1 = JobLabourSheet.get_Range
Excel.Range rngCut1 = JobLabourSheet.get_Range("B:B", Type.Missing);
Excel.Range rngPaste1 = JobLabourSheet.get_Range("Q:Q", Type.Missing);
rngCut1.Columns.Cut(rngPaste1.EntireColumn.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, rngCut1));
方法2导致“无法获取Range类的Cut属性”消息
Excel.Range rngCut1 = JobLabourSheet.get_Range("B:B", Type.Missing);
Excel.Range rngPaste1 = JobLabourSheet.get_Range("Q:Q", Type.Missing);
rngCut1.Columns.Cut(rngPaste1.EntireColumn.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, Missing.Value));
在第二种方法中,当我省略CopyOrigin时,我会得到msg,但它会在列Q前面插入一个空白列
在VBA中,我将使用以下内容:
Columns("B:B").Cut
Columns("Q:Q").Insert Shift:=xlToRight
但正如我所说,我的c#经验目前有限,因此我不知道如何将其翻译成c#这不是很直观,但这是我如何使其工作的。我获取了一个“insert”范围,并使用insert()方法,并传递了一个“range.Cut()”方法作为“Copy Origin”参数 参考文件:
看一看。可能是@Ken White的复制品,我确实看了那篇文章,但无法让anwers工作。嗨,Joseph,我尝试了你的方法,它工作了,但不是我所需要的。使用rngCut1.Cut(rngPaste1);将其从B列中剪切(B列留空)并粘贴到Q列中。但是,它会覆盖Q列中的值。我需要它做的是插入shiftotorght。@Cornelius得到了它。我想出了一些办法。现在将编辑答案。
using System;
using System.Collections.Generic;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelCutAndInsertColumn
{
class Program
{
static void Main(string[] args)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWb = xlApp.Workbooks.Open(@"C:\stackoverflow.xlsx");
Excel.Worksheet xlWs = (Excel.Worksheet)xlWb.Sheets[1]; // Sheet1
xlApp.Visible = true;
// cut column B and insert into A, shifting columns right
Excel.Range copyRange = xlWs.Range["B:B"];
Excel.Range insertRange = xlWs.Range["A:A"];
insertRange.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, copyRange.Cut());
}
}
}