高手们好!请问一个问题。我创建了一个二维数组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);
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);
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();
===================================
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;
}