高分求救。急,C#中导入EXcel表到数据库里面
我们有一个公共方法了。是这样但我不会用://导入ExcelpublicstaticDataTablereadExcel(stringpath){FileStreamfs=...
我们有一个公共方法了。是这样但我不会用:
//导入Excel
public static DataTable readExcel(string path)
{
FileStream fs = null;
try
{
fs = new FileStream(path, FileMode.Open, FileAccess.Read);
}
catch
{
MessageBox.Show("文件正被使用,请关闭文件在导入!");
return new DataTable();
}
HSSFWorkbook excel = new HSSFWorkbook(fs);
fs.Close();
//sheet数量
int sheets = excel.NumberOfSheets;
//列数
int cells = 0;
//HSSFSheet sheet;
NPOI.SS.UserModel.Sheet sheet;
DataTable dt = new DataTable();
for (int m = 0; m < sheets; m++)
{
sheet = excel.GetSheetAt(m);
//第一个sheet取标题行
if (m == 0)
{
//取第一行作为标题
//HSSFRow headerRow = sheet.GetRow(0);
NPOI.SS.UserModel.Row headerRow = sheet.GetRow(0);
cells = headerRow.LastCellNum;
for (int j = 0; j < cells; j++)
{
//HSSFCell cell = headerRow.GetCell(j);
NPOI.SS.UserModel.Cell cell = headerRow.GetCell(j);
dt.Columns.Add(cell.ToString());
}
}
//取数据
for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
{
//HSSFRow row = sheet.GetRow(i);
NPOI.SS.UserModel.Row row = sheet.GetRow(i);
DataRow dataRow = dt.NewRow();
for (int j = row.FirstCellNum; j < cells; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}
dt.Rows.Add(dataRow);
}
}
return dt;
}
我怎么样用这个公共方法 来实现导入excel表到数据库的功能,还有就是导入的时候 要根据我发的那个图里面的表来判断,根据时间那个字段,不重复导入,导入成功后 还要更新一下 时间那个字段,防止下次重复导入。跪求高人指点啊。
id biaoming riqi
1 mt_takemate 2112/1/1 0:00:00
2 mt_takegood 2112/1/1 0:00:00 展开
//导入Excel
public static DataTable readExcel(string path)
{
FileStream fs = null;
try
{
fs = new FileStream(path, FileMode.Open, FileAccess.Read);
}
catch
{
MessageBox.Show("文件正被使用,请关闭文件在导入!");
return new DataTable();
}
HSSFWorkbook excel = new HSSFWorkbook(fs);
fs.Close();
//sheet数量
int sheets = excel.NumberOfSheets;
//列数
int cells = 0;
//HSSFSheet sheet;
NPOI.SS.UserModel.Sheet sheet;
DataTable dt = new DataTable();
for (int m = 0; m < sheets; m++)
{
sheet = excel.GetSheetAt(m);
//第一个sheet取标题行
if (m == 0)
{
//取第一行作为标题
//HSSFRow headerRow = sheet.GetRow(0);
NPOI.SS.UserModel.Row headerRow = sheet.GetRow(0);
cells = headerRow.LastCellNum;
for (int j = 0; j < cells; j++)
{
//HSSFCell cell = headerRow.GetCell(j);
NPOI.SS.UserModel.Cell cell = headerRow.GetCell(j);
dt.Columns.Add(cell.ToString());
}
}
//取数据
for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
{
//HSSFRow row = sheet.GetRow(i);
NPOI.SS.UserModel.Row row = sheet.GetRow(i);
DataRow dataRow = dt.NewRow();
for (int j = row.FirstCellNum; j < cells; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}
dt.Rows.Add(dataRow);
}
}
return dt;
}
我怎么样用这个公共方法 来实现导入excel表到数据库的功能,还有就是导入的时候 要根据我发的那个图里面的表来判断,根据时间那个字段,不重复导入,导入成功后 还要更新一下 时间那个字段,防止下次重复导入。跪求高人指点啊。
id biaoming riqi
1 mt_takemate 2112/1/1 0:00:00
2 mt_takegood 2112/1/1 0:00:00 展开
展开全部
这个方法是读取Excel中的内容到DataTable 中,方法返回一个DataTable
该方法是静态方法,直接调用就行
类名+点+方法名 DataTable dt = ClassName.readExcel("文件路径")
你这个逻辑,大概是先获得文件名和文件时间,查看文件名和时间在表中是否存在
如果不存在,就把Excel的内容导到数据库中,反之不导入。
导入成功后,把文件名和时间,插入到数据库中。(biaoming 和文件名应该是对应,对应规则你自己规定)
中间再加上数据安全机制
该方法是静态方法,直接调用就行
类名+点+方法名 DataTable dt = ClassName.readExcel("文件路径")
你这个逻辑,大概是先获得文件名和文件时间,查看文件名和时间在表中是否存在
如果不存在,就把Excel的内容导到数据库中,反之不导入。
导入成功后,把文件名和时间,插入到数据库中。(biaoming 和文件名应该是对应,对应规则你自己规定)
中间再加上数据安全机制
追问
不是啊 biaoming是写死的 只是update 表中的时间字段
追答
就靠一个日期,判断是否重复的话,
那就先把文件夹中的文件按时间排序,顺序拿文件的时间和表中的最大的日期比较,大于这个日期的文件就导入,导入一个文件后,就把这个文件的日期更新到表中
如果文件分类的话,就分类排序,分类比较。mt_takemate一类,mt_takegood一类,
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询