using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
// 添加引用 -> .NET -> Microsoft.Office.Interop.Excel
namespace ProductManager
{
class ClassExcel
{
private ClassExcel()
{ }
public static void PrintExcel(DataGridView dgv, string name)
{
Excel.Application newExcel = new Excel.Application();
try
{
Excel.Workbook newBook = newExcel.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet newSheet = newBook.ActiveSheet as Excel.Worksheet;
newExcel.Visible = true;
newBook.Password = "jinzhexian";
newSheet.Name = name;
int rowCount = dgv.RowCount + 1, columnCount = dgv.ColumnCount;
Excel.Range newRange = newSheet.get_Range("B4", Type.Missing).get_Resize(2, columnCount);
newRange.MergeCells = true; // 合并单元格。
newRange.Font.Size = 16;
newRange.Value2 = name;
newRange = newRange.get_Offset(1, 0).get_Resize(rowCount, columnCount);
object[,] newItem = new object[rowCount, columnCount];
foreach (DataGridViewColumn column in dgv.Columns)
{
newItem[0, column.Index] = column.HeaderText;
foreach (DataGridViewRow row in dgv.Rows)
{
newItem[row.Index + 1, column.Index] = row.Cells[column.Index].Value;
}
}
newRange.Value2 = newItem;
newRange.EntireColumn.AutoFit(); // 自动调整列宽。
newRange.EntireColumn.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; // 水平居中。
newRange.Borders.LineStyle = Excel.XlLineStyle.xlDouble; // 设置外边框样式。
(newRange[2, 0] as Excel.Range).Select();
newExcel.SendKeys("%WFF", true); // 冻结拆分窗格。
}
catch
{
newExcel.Quit();
}
finally
{
newExcel = null;
GC.Collect();
}
}
}
}