亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將數組寫入Excel范圍

將數組寫入Excel范圍

C#
江戶川亂折騰 2019-08-03 07:03:45
將數組寫入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 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

這是我的方法的摘錄,它將DataTable(DT變量)轉換為數組,然后將數組寫入工作表上的范圍(WSH Var)。您還可以將topRow變量更改為您希望將字符串數組放在的任何行。

        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;

當然,您不需要像我一樣使用中間DataTable,代碼摘錄只是演示如何在單次調用中將數組寫入工作表。



查看完整回答
反對 回復 2019-08-04
  • 3 回答
  • 0 關注
  • 337 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號