//创建一个Excel.Application的新进程
Microsoft.Office.Interop.Excel.Application app = new Application();if (app == null) return;app.Visible = false;app.UserControl = true;Workbooks workbooks = app.Workbooks;_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);//这里的Add方法里的参数就相当于继承了一个空模板(暂这样理解吧)Sheets sheets = workbook.Worksheets;_Worksheet worksheet = (_Worksheet)sheets.get_Item(1);if (worksheet == null) return;DataSet ds = Convert_StringToDataSet(str);
System.Data.DataTable dt = ds.Tables[0];string bidName = "";int projNum = 0;for (int i = 0; i < dt.Rows.Count; i++){ projNum++; bidName = dt.Rows[i]["BigFactorClassName"].ToString(); worksheet.Cells[1 + i, 1] = i + 1; worksheet.Cells[1 + i, 3] = dt.Rows[i]["SmallFactorClassName"]; worksheet.Cells[1 + i, 4] = dt.Rows[i]["FactorClassName"]; if (i == 0)//如果是第一行,就直接写了 { worksheet.Cells[1 + i, 2] = dt.Rows[i]["BigFactorClassName"]; } else if (bidName == dt.Rows[i - 1]["BigFactorClassName"].ToString())//此行与上一行时行比较,如果相等就不写值 { worksheet.get_Range(worksheet.Cells[i + 1, 2], worksheet.Cells[i, 2]).Merge(Type.Missing); } else { worksheet.Cells[1 + i, 2] = dt.Rows[i]["BigFactorClassName"]; }}worksheet.Name = "导出Excel测试1";
string tick = DateTime.Now.Ticks.ToString();string save_path = "C:\\Users\\Administrator\\Desktop\\" + tick + ".xls";workbook.SaveAs(save_path, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Response.Write("<script>alert('导出成功!')</script>");