您的位置:首页 > 编程语言 > C#

C# 动态生成Excel,可实现冻结窗口等其他Excel扩展

2013-01-12 16:43 477 查看
/// <summary>

/// 需先引用Office的Excel组件Microsoft.Office.Interop.Excel

/// using Microsoft.Office.Interop.Excel;

/// 导出Excel,示例:ExportDataTable(DT, @"D:\测试Excel");

/// 作者:若非轻寒 Email:ooofcu@hotmail.com

/// </summary>

/// <param name="dt">DataTable</param>

/// <param name="filename">要保存的文件路径</param>

/// <param name="sRangeIndex">参数:"1"默认;"2"冻结第一行;"3"冻结前两行,或者更大的数</param>

public static void ExportDataTable(System.Data.DataTable dt, string filename, string sRangeIndex)

{

if (filename != "")

{

if (filename.LastIndexOf(".xls") <= 0)

{

filename = filename + ".xls";

}

if (System.IO.File.Exists(filename))

{

System.IO.File.Delete(filename);

}

Microsoft.Office.Interop.Excel.ApplicationClass xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();

if (xlApp == null)

{

//无法创建Excel对象,可能您的机器未安装Excel!

return;

}
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;

Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);

Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
for (int i = 0; i < dt.Rows.Count; i++)

{

for (int j = 0; j < dt.Columns.Count; j++)

{

if (i == 0)

{

worksheet.Cells[1, j + 1] = dt.Columns[j].ColumnName;

}

worksheet.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString();

}

}
//------------实现 Excel冻结窗口 功能---------------

Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Worksheets;

Microsoft.Office.Interop.Excel._Worksheet worksheetA = (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(1);

Microsoft.Office.Interop.Excel.Range rangeTemp = worksheetA.get_Range("A" + sRangeIndex, "B4"); //A2即从第二行以上进行冻结

rangeTemp.Select();

xlApp.ActiveWindow.FreezePanes = true;

//--------------------------------------------------
workbook.Saved = true;

workbook.SaveCopyAs(filename);

System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);

worksheet = null;

System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);

workbook = null;

workbooks.Close();

System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);

workbooks = null;

xlApp.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

xlApp = null;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: