上一篇描述的是C#读取XML中的数据保存到List。今天描述一下如何将List中的数据导入到Excel中。我的实现是根据下面的博客进行改进的,这里给出原来博客的内容。
由于是Excel文件,所以要用到Office相关的dll,故请添加相应dll的引用,然后在程序中添加如下命名空间:
using Microsoft.Office.Interop.Excel;
自定义Student类:
public class Student
{
private string id;
public string Id { get { return id; } set { id = value; } }
private string name;
public string Name { get { return name; } set { name = value; } }
private string age;
public string Age { get { return age; } set { age = value; } }
}
给出简单的模拟数据:
private List<Student> GetStudentData()
{
List<Student> studentList = new List<Student>();
Student s1 = new Student();
s1.Id = "1";
s1.Name = "haha";
s1.Age = "10";
Student s2 = new Student();
s2.Id = "2";
s2.Name = "xixi";
s2.Age = "20";
Student s3 = new Student();
s3.Id = "3";
s3.Name = "lolo";
s3.Age = "30";
studentList.Add(s1);
studentList.Add(s2);
studentList.Add(s3);
return studentList;
}
用反射获取类型的所有属性(以便后续生成所有Column的标题):
private PropertyInfo[] GetPropertyInfoArray()
{
PropertyInfo[] props = null;
try
{
Type type = typeof(EricSunApp.Student);
object obj = Activator.CreateInstance(type);
props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
}
catch (Exception ex)
{ }
return props;
}
遍历List,将数据保存成Excel文件:
private void SaveDataToExcelFile(List<Student> studentList, string filePath)
{
object misValue = System.Reflection.Missing.Value;
Application xlApp = new Application();
Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);
Worksheet xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.get_Item(1);
PropertyInfo[] props = GetPropertyInfoArray();
for (int i = 0; i < props.Length; i++)
{
xlWorkSheet.Cells[1, i + 1] = props[i].Name; //write the column name
}
for (int i = 0; i < studentList.Count; i++)
{
xlWorkSheet.Cells[i + 2, 1] = studentList[i].Id;
xlWorkSheet.Cells[i + 2, 2] = studentList[i].Name;
xlWorkSheet.Cells[i + 2, 3] = studentList[i].Age;
}
try
{
xlWorkBook.SaveAs(filePath, XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
}
catch (Exception ex)
{ }
}
说明:这里需要注意是,要引入Excel的dll文件。同时
Worksheet xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.get_Item(1);
可以定义多个,即同一个Excel中可以将数据写到不同的Sheet表中。另外,对于SaveAs()方法的使用,注意必选参数和可选参数。
//下面这段代码是SaveAs()的格式
expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local);
原博客来源:http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849907.html