将数组写入Excel范围我目前正在尝试使用以下代码将数据从对象数组写入Excel中的某个范围objData只是一个字符串数组:private object m = System.Type.Missing;object[] objData = getDataIWantToWrite();Range rn_Temp;rn_Temp = (Range)XlApp.get_Range(RangeName, m);rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1);rn_Temp.value2 = objData;这几乎是可行的,问题是范围会被填充,但是每个单元格都会获得objData.反作用力,即private object m = System.Type.Missing;object[] objData = new object[x,y]Range rn_Temp;rn_Temp = (Range)XlApp.get_Range(RangeName, m);rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1);objData = (object[])rn_Temp.value2;将返回一个数组,其中包含工作表中的所有值,因此我不确定为什么读取和分配的工作方式不同。有人成功过吗?我目前正在逐个单元格编写数组单元,但它需要处理大量(>5万)行,因此这非常耗时。
3 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
object[,] arr = new object[dt.Rows.Count, dt.Columns.Count]; for (int r = 0; r < dt.Rows.Count; r++) { DataRow dr = dt.Rows[r]; for (int c = 0; c < dt.Columns.Count; c++) { arr[r, c] = dr[c]; } } Excel.Range c1 = (Excel.Range)wsh.Cells[topRow, 1]; Excel.Range c2 = (Excel.Range)wsh.Cells[topRow + dt.Rows.Count - 1, dt.Columns.Count]; Excel.Range range = wsh.get_Range(c1, c2); range.Value = arr;
- 3 回答
- 0 关注
- 700 浏览
添加回答
举报
0/150
提交
取消