一样的阿,也是用1,2,3.....来循环。看下面的例子worksheet.Cells[1, i+1] = col.ColumnName;中j就表示列/// <summary> /// 将DataTable数据导入EXCEL /// </summary> /// <param name="dt">DataTable</param> /// <param name="strExcelFile">Excel路径</param> /// <param name="strError"></param> /// <returns> /// -1 不成功 /// 0 成功导入 /// </returns> public static int DataTableToExcel(System.Data.DataTable dt, string strExcelFileName, out string strError) { strError = ""; int nRet = 0; 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]; for (int i = 0; i < dt.Columns.Count; i++) { DataColumn col = dt.Columns[i]; worksheet.Cells[1, i+1] = col.ColumnName; } for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; for (int j = 0; j < dt.Columns.Count; j++) { worksheet.Cells[i+2, j+1] = row[j].ToString().Trim(); } } worksheet.Columns.EntireColumn.AutoFit(); workbook.Saved = true; workbook.SaveCopyAs(strExcelFileName); xlApp.Quit(); return 0; }
Excel.Application myExcel = new Excel.Application(); myExcel.Application.Workbooks.Add(true); //This part used for only write values which values come from here myExcel.Cells[1, 1] = "Li"; myExcel.Cells[1, 2] = "Xin"; myExcel.Cells[2, 1] = "Love"; myExcel.Cells[3, 1] = "Liao"; myExcel.Cells[3, 2] = "Sheng"; myExcel.Cells[3, 3] = "Hui";
//This part is used for write values which values come from datagrid //for (int i = 1; i < 9; i++) //{ // for (int j = 1; j < 5; j++) // { // myExcel.Cells[i, j] = Convert.ToInt32(this.DataGrid1[i, j].ToString()) + 1000; // } //} //myExcel.Save(@"myExcel.xls"); myExcel.Save(@"C:\FuckYou.xls"); myExcel.Visible = true; //myExcel.Quit();这里的代码和注释的代码楼主都可以看一下,注释了的是用DATAGRID里的给EXCEL的CELL循环写如.而没有注释了的代码是硬码写入CELL的值.道理是一样的.呵呵.希望能有用:)
/// 将DataTable数据导入EXCEL
/// </summary>
/// <param name="dt">DataTable</param>
/// <param name="strExcelFile">Excel路径</param>
/// <param name="strError"></param>
/// <returns>
/// -1 不成功
/// 0 成功导入 /// </returns>
public static int DataTableToExcel(System.Data.DataTable dt,
string strExcelFileName,
out string strError)
{
strError = "";
int nRet = 0; 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]; for (int i = 0; i < dt.Columns.Count; i++)
{
DataColumn col = dt.Columns[i];
worksheet.Cells[1, i+1] = col.ColumnName;
} for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
for (int j = 0; j < dt.Columns.Count; j++)
{
worksheet.Cells[i+2, j+1] = row[j].ToString().Trim();
}
} worksheet.Columns.EntireColumn.AutoFit();
workbook.Saved = true;
workbook.SaveCopyAs(strExcelFileName);
xlApp.Quit();
return 0;
}
myExcel.Application.Workbooks.Add(true);
//This part used for only write values which values come from here
myExcel.Cells[1, 1] = "Li";
myExcel.Cells[1, 2] = "Xin";
myExcel.Cells[2, 1] = "Love";
myExcel.Cells[3, 1] = "Liao";
myExcel.Cells[3, 2] = "Sheng";
myExcel.Cells[3, 3] = "Hui";
//This part is used for write values which values come from datagrid
//for (int i = 1; i < 9; i++)
//{
// for (int j = 1; j < 5; j++)
// {
// myExcel.Cells[i, j] = Convert.ToInt32(this.DataGrid1[i, j].ToString()) + 1000;
// }
//}
//myExcel.Save(@"myExcel.xls");
myExcel.Save(@"C:\FuckYou.xls");
myExcel.Visible = true;
//myExcel.Quit();这里的代码和注释的代码楼主都可以看一下,注释了的是用DATAGRID里的给EXCEL的CELL循环写如.而没有注释了的代码是硬码写入CELL的值.道理是一样的.呵呵.希望能有用:)