3.在excel模版的基础上写数据进去(基于微软的Com组件)
如果你电脑上安装的office 2000,请引用Excel9.0.dll,如果是office2003请引用Excel 11.0 object Library
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="templateExcelPath">模板文件所在路径(full name)</param>
/// <param name="newExcelPath">要导出文件所在路径(full name)</param>
/// <param name="iBegin">Excel文件内开始写入表内的数据的行的Index</param>
/// <param name="dt">需要导出数据的数据表</param>
/// <returns>bool</returns>
protected bool ExportExcel(string templateExcelPath,string newExcelPath,int iBegin,DataTable dt)
{
bool bReturn = true;
try
{
FileInfo fileInfo = new FileInfo(templateExcelPath);
string newFileName = newExcelPath;
fileInfo.CopyTo(newFileName);
//打开复制后的文件
object missing = Missing.Value;
Excel.Application myExcel = new Excel.Application();
//打开新文件
myExcel.Application.Workbooks.Open(newFileName,missing,missing,missing,missing,
missing,missing,missing,missing,missing,missing, missing,missing,missing,missing);
//将Excel隐藏
myExcel.Visible = false;
Excel.Workbook myBook = myExcel.Workbooks[1];
//Excel.Worksheet mySheet = (Excel.Worksheet)myBook.Worksheets[1];
//逐行写入数据
int iRows = dt.Rows.Count;
int iCols = dt.Columns.Count;
for(int i=0;i<iRows;i++)
{
for(int j=0;j<iCols;j++)
{
myExcel.Cells[iBegin+i,1+j]="'"+dt.Rows[i][j].ToString();
}
}
myBook.Save();
myExcel.Quit();
//Excel.Range rBegin = mySheet.get_Range(mySheet.Cells[2,1],mySheet.Cells[2,1]);
//string strValue=rBegin.Value.ToString();
bReturn = FileDownload(newExcelPath);
}
catch{bReturn = false;}
return bReturn;
}