我在此链接中找到一个excel文件,因此我要执行的操作是使用其格式和公式复制第22行(用红色突出显示),然后将其插入第23行,然后使用其格式将第25行(用红色突出显示)复制并然后将公式插入到第26行。调试时,它适用于第22行,但在此行中显示“我们无法对合并的单元格执行此操作”错误sourceRange2.Copy(destRange2);
这是我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;
using System.IO;
using System.Reflection;
using System.Text;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private object missing = Missing.Value;
private void button1_Click(object sender, EventArgs e)
{
Excel.Application myApp = new Excel.Application();
Excel.Workbook my_workbook = myApp.Workbooks.Open(@"C:\Test\myexcel.xlsx");
Excel.Worksheet my_ws = my_workbook.Worksheets[1];
Range range = (Excel.Range)my_ws.Rows[22, this.missing];
range.Insert(Excel.XlDirection.xlDown);
//Source Range
Range sourceRange = my_ws.Range["A22","H22"];
//Destination range
Range destRange = my_ws.Range["A23", "H23"];
sourceRange.Copy(destRange);
Range range2 = (Excel.Range) my_ws.Rows[25, this.missing];
range2.Insert(Excel.XlDirection.xlDown);
//Source Range
Range sourceRange2 = my_ws.Range["A25", "H25"];
//Destination range
Range destRange2 = my_ws.Range["A26", "H26"];
sourceRange2.Copy(destRange2);
my_workbook.Save();
}
}
}
第一次添加行后,第二条红线不再位于第25行,而是位于第26行。第25行现在是垂直合并的单元格的一部分,因此合并了单元格错误。因此,代码的第二部分应阅读
Range range2 = (Excel.Range) my_ws.Rows[26, this.missing];
range2.Insert(Excel.XlDirection.xlDown);
//Source Range
Range sourceRange2 = my_ws.Range["A26", "H26"];
//Destination range
Range destRange2 = my_ws.Range["A27", "H27"];
sourceRange2.Copy(destRange2);
我也建议您关闭excel文件(如果您未在其他地方关闭),否则最终会打开很多excel实例
my_workbook.Close();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句