高手们好!请问一个问题。我创建了一个二维数组TR1[,]。我要将其元素写到Excel表格当中。但是数组大于255*255,而一张sheet表只能写入255*255个元素,请问如何将A[,]的元素全部写在一张sheet当中? 程序如下:            Excel.Application xApp = new Excel.ApplicationClass();
            xApp.Visible = true;
            Excel.Workbook xBook = xApp.Workbooks.Add(Missing.Value);
            Excel.Worksheet xSheet = (Excel.Worksheet)xApp.ActiveSheet;
          
            Excel.Range range = (Excel.Range)xSheet.Cells[1, 1];
            range = range.get_Resize(255, 255);
            range.Value2 = TR1;            xBook.SaveAs(str, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
            Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value,
            Missing.Value, Missing.Value);

解决方案 »

  1.   


                   Excel.Application xlApp = new Excel.Application();
                   Excel.Workbooks workbooks = xlApp.Workbooks;
                   Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
                   Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 
                   // worksheet.Cells.NumberFormat = "#";
                    //写入字段 
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
                    }
                    //写入数值                 for (int r = 0; r < dt.Rows.Count; r++)
                    {
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            worksheet.Cells[r + 2, i + 1] = "'"+dt.Rows[r][i].ToString();
                        }
                        System.Windows.Forms.Application.DoEvents();
                    }
                    worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
                      workbook.Saved = true;
                    workbook.SaveCopyAs(saveFileName);
                    xlApp.Quit();
                    GC.Collect();
      

  2.   

    而一张sheet表只能写入255*255个元素
    ===================================
    excel2007的最大行数: 1048576 行,应该足够你用了
    public void DataTableToExcel(DataTable dt, int top, int left, Excel.Worksheet objSheet) {
                int rowCount = dt.Rows.Count; //DataTable行数
                int colCount = dt.Columns.Count; //DataTable列数            //利用二维数组批量写入
                object[,] arr = new object[rowCount, colCount];            for (int j = 0; j < rowCount; j++) {
                    for (int k = 0; k < colCount; k++) {
                        arr[j, k] = dt.Rows[j][k].ToString();
                    }
                }            range = (Excel.Range)objSheet.Cells[top, left];
                range = range.get_Resize(rowCount, colCount);
                range.Value2 = arr;
            }