asp.net 模板生成Excel
using Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.Diagnostics;
using Microsoft.Win32;
using System.IO;
protected void Button1_Click(object sender, EventArgs e)
{
//建立一个Excel.Application的新进程
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
if (app == null)
{
return;
}
app.Visible = false;
app.UserControl = true;
Workbooks workbooks = app.Workbooks;
if (ExistsRegedit07())
{
_Workbook workbook = workbooks.Add("D:\\测试.xlsx");
//_Workbook workbook = workbooks.Add("D:\\测试.xlsx");//这里的Add方法里的参数就是模板的路径
// _Workbook workbook = workbooks.Add(Missing.Value); //不用模板
Sheets sheets = workbook.Worksheets;
_Worksheet worksheet = (_Worksheet)sheets.get_Item(1); //这里表示模板只有一个sheet表
if (worksheet == null)
{
return;
}
for (int i = 0; i < GridView1.Rows.Count; i++)
{
worksheet.Cells[i + 2, 1] = GridView1.Rows[i].Cells[0].Text;
worksheet.Cells[i + 2, 2] = GridView1.Rows[i].Cells[1].Text;
worksheet.Cells[i + 2, 3] = GridView1.Rows[i].Cells[2].Text;
worksheet.Cells[i + 2, 4] = GridView1.Rows[i].Cells[3].Text;
}
string filename = "~/File/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
workbook.SaveAs(Server.MapPath(filename), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//save_path为要保存到的文件路径
ExcelOperate excelOperate = new ExcelOperate();
excelOperate.Dispose(worksheet, workbook, app);//生成好EXCEL文件后关闭Excel进程
Response.Redirect(filename);
}
else
{
_Workbook workbook = workbooks.Add("D:\\测试1.xls"); //Missing.Value 不用模板
//_Workbook workbook = workbooks.Add("D:\\测试.xlsx");//这里的Add方法里的参数就是模板的路径
Sheets sheets = workbook.Worksheets;
_Worksheet worksheet = (_Worksheet)sheets.get_Item(1); //这里表示模板只有一个sheet表
if (worksheet == null)
{
return;
}
for (int i = 0; i < GridView1.Rows.Count; i++)
{
worksheet.Cells[i + 2, 1] = GridView1.Rows[i].Cells[0].Text;
worksheet.Cells[i + 2, 2] = GridView1.Rows[i].Cells[1].Text;
worksheet.Cells[i + 2, 3] = GridView1.Rows[i].Cells[2].Text;
worksheet.Cells[i + 2, 4] = GridView1.Rows[i].Cells[3].Text;
}
string filename = "~/File/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
workbook.SaveAs(Server.MapPath(filename), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//save_path为要保存到的文件路径
ExcelOperate excelOperate = new ExcelOperate(); //ExcelOperate 类
excelOperate.Dispose(worksheet, workbook, app);//生成好EXCEL文件后关闭Excel进程
Response.Redirect(filename);
}
}
public bool ExistsRegedit07()
{
bool ifused = false;
RegistryKey rk = Registry.LocalMachine;
//RegistryKey akey = rk.OpenSubKey(@"SOFTWARE\\Microsoft\\Office\\11.0\\Word\\InstallRoot\\");
RegistryKey akeytwo = rk.OpenSubKey(@"SOFTWARE\\Microsoft\\Office\\12.0\\Word\\InstallRoot\\");
//检查本机是否安装Office2003
//if (akey != null)
//{
// string file03 = akey.GetValue("Path").ToString();
// if (File.Exists(file03 + "Excel.exe"))
// {
// ifused = true;
// }
//}
//检查本机是否安装Office2007
if (akeytwo != null)
{
string file07 = akeytwo.GetValue("Path").ToString();
if (File.Exists(file07 + "Excel.exe"))
{
ifused = true;
}
}
return ifused;
}
用2003做模板,生成Excel97-2003兼容模式
//Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8:Excel97-2003格式
//Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel12:Excel2007格式
string filename = "~/File/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
workbook.SaveAs(Server.MapPath(filename), Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//save_path为要保存到的文件路径
浙公网安备 33010602011771号