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