{
public static void SaveToExcel<T>(List<T> list, string fileName)
{
Type t = typeof(T);
IWorkbook wrk = new HSSFWorkbook();
// Sheet的名字,肯定使用T的名字
ISheet sheet = wrk.CreateSheet(t.Name);
PropertyInfo[] ps = t.GetProperties();
for (int i = 0; i < list.Count; i++)
{
IRow r = sheet.CreateRow(i);
// 创建数据
// r.CreateCell(0).SetCellValue();
// 遍历Per的属性值
for (int j = 0; j < ps.Length; j++)
{
// 获得第j个属性的值
object o = ps[j].GetValue(list[i], null);
// 判断o的类型,并将其转换赋值到单元格中
if (o != null)
{
switch (o.GetType().Name.ToLower())
{
case "int16":
case "int32":
case "int64":
case "double":
case "decimal": r.CreateCell(j).SetCellValue(Convert.ToDouble(o)); break;
case "boolean": r.CreateCell(j).SetCellValue(Convert.ToBoolean(o)); break;
case "datetime":
ICell c = r.CreateCell(j);
ICellStyle cstyle = wrk.CreateCellStyle();
cstyle.DataFormat = wrk.CreateDataFormat().GetFormat("yyyy/MM/dd hh:mm:ss");
c.CellStyle = cstyle;
c.SetCellValue(Convert.ToDateTime(o)); break;
default:
r.CreateCell(j).SetCellValue(o.ToString()); break;
}
}
}
}
using (FileStream file = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
wrk.Write(file);
}
}
对应的引用
private void btnSaveTo_Click(object sender, EventArgs e)
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*";
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// 执行保存代码
string file = sfd.FileName;
List<Model.Productinfo> list = dgViewProductList.DataSource as List<Model.Productinfo>;
if (list == null) return;
ExcelHelper.SaveToExcel<Model.Productinfo>(list, file);
}
}
}