gpt4 book ai didi

c# - 附加三列后将数据写入错误位置

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:22 25 4
gpt4 key购买 nike

我将数据从一个位置复制到另一个位置,能够读取和打印所有值,并能够在 Excel 文件中附加三列。所以现在 A、B、C 列变成了 D、E、F(Shifting)等。

            Excel.Application app = new Excel.Application();
Excel.Workbooks workbooks = app.Workbooks;
string newlocation_filename = @"C:\Windows\Temp\" + FileName;
File.Copy(FilePath, newlocation_filename, true);
//string filename = FilePath;
workbooks.Open(newlocation_filename);
Excel.Workbook workbook = workbooks.Item[1];
Excel.Sheets worksheets = workbook.Worksheets;
Excel.Worksheet worksheet = (Worksheet)worksheets.Item[1];
Excel.Range cells = worksheet.UsedRange;
Range oRng = worksheet.Range["A1"];
oRng.EntireColumn.Insert(XlInsertShiftDirection.xlShiftToRight,XlInsertFormatOrigin.xlFormatFromRightOrBelow);

oRng = worksheet.Range["B1"];
oRng.EntireColumn.Insert(XlInsertShiftDirection.xlShiftToRight,XlInsertFormatOrigin.xlFormatFromRightOrBelow);

oRng = worksheet.Range["C1"];
oRng.EntireColumn.Insert(XlInsertShiftDirection.xlShiftToRight,XlInsertFormatOrigin.xlFormatFromRightOrBelow);

cells[1, 1] = "AccountNumber";//Set value for row 1 and column 2 (A1)
cells[1, 2] = "CustomerName";
cells[1, 3] = "ComparisionResult";//Set value for row 1 and column 3 (B1)

workbook.Save();//Save Excel-File
app.Quit();

}

从上面的代码中可以看出AccountNumber,CustomerName,ComparisionResult需要分别在A1,B1,C1单元格中设置(新增列) .但 它替换了 D1、E1、F1(旧的 A1、B1、C1 表示附加之前)字段值中的数据,并且 A1、B1、C1 字段值没有更新。我认为它替换了数据然后附加发生了。

是否需要更新语句来解决这个问题?

最佳答案

Tim 几乎是正确的,但严格来说,问题并不完全与 UsedRange 的错误使用有关,而是与稍后发生的插入有关,这会影响已分配的范围变量。您首先分配:

Excel.Range cells = worksheet.UsedRange;

此时cells[1, 1]就是A1,因为后者其实是第一个使用的cell。但是稍后当您在开头进行三列插入时,您设置的任何范围都会向右移动 3 个位置。所以在三个插入之后,cells[1, 1]D1,而不是A1。此转换将应用于任何范围对象,不仅(但包括)UsedRange

正是由于这个原因,cells[1, 1] = "AccountNumber"; 实际上写入了 D1 而不是 A1

解决方案是将范围移回以补偿添加的插入。您可以在写入单元格之前添加此行:

cells = cells.Offset(0, -3);
cells[1, 1] = "AccountNumber";
// etc...

关于c# - 附加三列后将数据写入错误位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33686186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com