以实例说明如何使用C#从数据库中提取数据,按要求自动生成定制的Excel表格
最近因为需要学习了一下使用C#操作Excel表格,现在把我使用C#如何定制表格的过程提供给需要的兄弟:
/*从数据库提取数据*/
string strconn="packet size=4096;user id=sa;data source=localhost;persist security info=True;initial catalog=Database;password=sa";
SqlConnection sqlconn=new SqlConnection(strconn);
sqlconn.Open();
SqlDataAdapter sqldataAdapter=new SqlDataAdapter("Select * from [数据表]",sqlconn);
DataSet myds=new DataSet();
sqldataAdapter.Fill(myds);
/*在Execl中建立“成果表”的格式表格*/
Excel.ApplicationClass excel=new Excel.ApplicationClass();
excel.Application.Workbooks.Add(true);
excel.Cells[1,1] = "单元名称" ;
excel.Cells[1,2]="指标及其描述、特征值和权重";
excel.Cells[1,23]="属性";
excel.Cells[2,2]="D";
excel.Cells[2,5]="R";
excel.Cells[2,8]="A";
excel.Cells[2,11]="S";
excel.Cells[2,14]="T";
excel.Cells[2,17]="I";
excel.Cells[2,20]="C";
excel.Cells[2,23]="结果";
excel.Cells[2,24]="等级";
excel.Cells[3,2]="描述";
excel.Cells[3,3]="特征值";
excel.Cells[3,4]="权重";
excel.Cells[3,5]="描述";
excel.Cells[3,6]="特征值";
excel.Cells[3,7]="权重";
excel.Cells[3,8]="描述";
excel.Cells[3,9]="特征值";
excel.Cells[3,10]="权重";
excel.Cells[3,11]="描述";
excel.Cells[3,12]="特征值";
excel.Cells[3,13]="权重";
excel.Cells[3,14]="描述";
excel.Cells[3,15]="特征值";
excel.Cells[3,16]="权重";
excel.Cells[3,17]="描述";
excel.Cells[3,18]="特征值";
excel.Cells[3,19]="权重";
excel.Cells[3,20]="描述";
excel.Cells[3,21]="特征值";
excel.Cells[3,22]="权重";
excel.get_Range(excel.Cells[ 1 , 1 ],excel.Cells[ 3 ,1 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 1 , 2 ],excel.Cells[ 1 ,22 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 1 , 23 ],excel.Cells[ 1 ,24 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 2 ],excel.Cells[ 2 ,4 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 5 ],excel.Cells[ 2 ,7 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 8],excel.Cells[ 2 ,10 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 ,11 ],excel.Cells[ 2 ,13 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 14 ],excel.Cells[ 2 ,16 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 17 ],excel.Cells[ 2 ,19 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 20 ],excel.Cells[ 2 ,22 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 23 ],excel.Cells[ 3 ,23 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 24 ],excel.Cells[ 3 ,24 ]).MergeCells=true;
/*往Excel格式表格中写入数据*/
int waterdataRows=myds.Tables[0].Rows.Count;
int waterdataCols=myds.Tables[0].Columns.Count;
for(int i=1;i<=waterdataRows;i++)
{
excel.Cells[i+3,1]=myds.Tables[0].Rows[i-1].ItemArray.GetValue(0);
for(int j=1;j<=7;j++)
{
excel.Cells[i+3,3*j]=myds.Tables[0].Rows[i-1].ItemArray.GetValue(j);
excel.Cells[i+3,3*j+1]=WW[j-1];
}
excel.Cells[i+3,23]=ds.Tables[0].Rows[i-1].ItemArray.GetValue(1);
excel.Cells[i+3,24]=ds.Tables[0].Rows[i-1].ItemArray.GetValue(3);
}
excel.Visible=false;
excel.DisplayAlerts=false;
//Excel.WorksheetClass worksheet=(Excel.WorksheetClass)excel.ActiveSheet;
excel.Save();
excel.Application.Workbooks.Close();
excel.Application.Quit();
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject (excel);
KillProcess("EXCEL.EXE");
GC.Collect();
/*从数据库提取数据*/
string strconn="packet size=4096;user id=sa;data source=localhost;persist security info=True;initial catalog=Database;password=sa";
SqlConnection sqlconn=new SqlConnection(strconn);
sqlconn.Open();
SqlDataAdapter sqldataAdapter=new SqlDataAdapter("Select * from [数据表]",sqlconn);
DataSet myds=new DataSet();
sqldataAdapter.Fill(myds);
/*在Execl中建立“成果表”的格式表格*/
Excel.ApplicationClass excel=new Excel.ApplicationClass();
excel.Application.Workbooks.Add(true);
excel.Cells[1,1] = "单元名称" ;
excel.Cells[1,2]="指标及其描述、特征值和权重";
excel.Cells[1,23]="属性";
excel.Cells[2,2]="D";
excel.Cells[2,5]="R";
excel.Cells[2,8]="A";
excel.Cells[2,11]="S";
excel.Cells[2,14]="T";
excel.Cells[2,17]="I";
excel.Cells[2,20]="C";
excel.Cells[2,23]="结果";
excel.Cells[2,24]="等级";
excel.Cells[3,2]="描述";
excel.Cells[3,3]="特征值";
excel.Cells[3,4]="权重";
excel.Cells[3,5]="描述";
excel.Cells[3,6]="特征值";
excel.Cells[3,7]="权重";
excel.Cells[3,8]="描述";
excel.Cells[3,9]="特征值";
excel.Cells[3,10]="权重";
excel.Cells[3,11]="描述";
excel.Cells[3,12]="特征值";
excel.Cells[3,13]="权重";
excel.Cells[3,14]="描述";
excel.Cells[3,15]="特征值";
excel.Cells[3,16]="权重";
excel.Cells[3,17]="描述";
excel.Cells[3,18]="特征值";
excel.Cells[3,19]="权重";
excel.Cells[3,20]="描述";
excel.Cells[3,21]="特征值";
excel.Cells[3,22]="权重";
excel.get_Range(excel.Cells[ 1 , 1 ],excel.Cells[ 3 ,1 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 1 , 2 ],excel.Cells[ 1 ,22 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 1 , 23 ],excel.Cells[ 1 ,24 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 2 ],excel.Cells[ 2 ,4 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 5 ],excel.Cells[ 2 ,7 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 8],excel.Cells[ 2 ,10 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 ,11 ],excel.Cells[ 2 ,13 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 14 ],excel.Cells[ 2 ,16 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 17 ],excel.Cells[ 2 ,19 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 20 ],excel.Cells[ 2 ,22 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 23 ],excel.Cells[ 3 ,23 ]).MergeCells=true;
excel.get_Range(excel.Cells[ 2 , 24 ],excel.Cells[ 3 ,24 ]).MergeCells=true;
/*往Excel格式表格中写入数据*/
int waterdataRows=myds.Tables[0].Rows.Count;
int waterdataCols=myds.Tables[0].Columns.Count;
for(int i=1;i<=waterdataRows;i++)
{
excel.Cells[i+3,1]=myds.Tables[0].Rows[i-1].ItemArray.GetValue(0);
for(int j=1;j<=7;j++)
{
excel.Cells[i+3,3*j]=myds.Tables[0].Rows[i-1].ItemArray.GetValue(j);
excel.Cells[i+3,3*j+1]=WW[j-1];
}
excel.Cells[i+3,23]=ds.Tables[0].Rows[i-1].ItemArray.GetValue(1);
excel.Cells[i+3,24]=ds.Tables[0].Rows[i-1].ItemArray.GetValue(3);
}
excel.Visible=false;
excel.DisplayAlerts=false;
//Excel.WorksheetClass worksheet=(Excel.WorksheetClass)excel.ActiveSheet;
excel.Save();
excel.Application.Workbooks.Close();
excel.Application.Quit();
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject (excel);
KillProcess("EXCEL.EXE");
GC.Collect();