初学C#,为了方便自己复习,决定将学习过程做一些记录。
在自学了一些教程后,决定自行设计开发一个工作中可以用到的类似OA的程序。采用MVC+EF,其中使用了CodeFirst,在基本框架设计好之后,发现原始数据录入有点问题,能否不同过直接操作数据库导入呢?我试着设计一个winform界面的导入导出测试程序,由于Model类比较多,在导入Model类数据是,使用反射技术。在测试过程中,Excel的读写使用NPOI插件,在网络上找了一些资料,在程序中不太完善,特别是日期类型读取到DataTable中是,格式出现错误。经修改测试后基本通过,下面记录以备后用。
public class ExcelHelper : IDisposable
{
private string fileName = null; //文件名
private IWorkbook workbook = null;
private FileStream fs = null;
private bool disposed;
public ExcelHelper(string fileName)
{
this.fileName = fileName;
disposed = false;
}
/// <summary>
/// 将DataTable数据导入到excel中
/// </summary>
/// <param name="data">要导入的数据</param>
/// <param name="isColumnWritten">DataTable的列名是否要导入</param>
/// <param name="sheetName">要导入的excel的sheet的名称</param>
/// <returns>导入数据行数(包含列名那一行)</returns>
public int DataTableToExcel(DataTable data, string sheetName, bool isColumnWritten)
{
int i = 0;
int j = 0;
int count = 0;
ISheet sheet = null;
fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
if (fileName.IndexOf(".xlsx") > 0) // 2007版本
workbook = new XSSFWorkbook();
else if (fileName.IndexOf(".xls") > 0) // 2003版本
workbook = new HSSFWorkbook();