0
我在使用set_value方法时发现问题。我写了最简单的代码来排除我的错误。Excel Interop的set_value方法损坏值
当我读一些细胞,然后使用SET_VALUE它们写回片而:
任何过滤器在XLSX文件活性,
2或更多的列是获得/设置,
某些单元格已损坏(它们是空的或包含垃圾,如#N/D!)。当我在使用set_value之前禁用工作表或程序中的过滤时,一切正常。我无法在Google中找到关于此特定问题的任何信息,我是否在做一些非常愚蠢的事情?
Excel.Workbooks workbooks;
Excel.Workbook workbook = null;
Excel.Worksheet sheet = null;
Excel.Application excelApplication;
excelApplication = new Excel.Application();
excelApplication.Visible = false;
workbooks = excelApplication.Workbooks;
workbook = workbooks.OpenXML(file);
sheet = workbook.Sheets[1];
Excel.Range excelRangeR = sheet.UsedRange;
object[,] valueArrayR = (object[,])excelRangeR.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);
//if uncomment line below (or manualy disable filters in XLSX file), set_value works fine
//sheet.AutoFilterMode = false;
excelRangeR.set_Value(Excel.XlRangeValueDataType.xlRangeValueDefault, valueArrayR);
workbook.Save();
workbook.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelRangeR);
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
excelApplication.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication);
我试图read-> write->读取测试范围,并且似乎get_values正确读取所有数据,set_values在第一个过滤后隐藏的行后产生一个随机混乱。 我希望我犯了一个错误,并且有一些方法可以用有效的过滤器编写值,但似乎我必须使用您的代码:) –
是的,我之前遇到过这个问题。我发现的唯一解决方案是清除过滤器或一次一行地粘贴数据,这对于大量数据来说非常缓慢。 – Tmdean