vb.net excel导入sql如何自动获取excel的sheet名?

2024-11-02 15:14:57
推荐回答(2个)
回答1:

1.将excel上传到服务器
///


/// 上传文件到指定服务器文件
///

/// .Net_FileUpload控件
/// out 返回上传是否成功
/// out 返回上传到服务器上的文件名
/// 返回布尔类型。 上传成功返回true 失败false
public static bool UpLoad(FileUpload fileUpload, out string mag, out string fileName)
{
mag = null;
fileName = null;
bool flag = false;
//是否允许上载
bool fileAllow = false;
//设定允许上载的扩展文件名类型
string[] allowExtensions = { ".xls", ".xlsx" };
//检查是否有(是否包含)文件案
if (fileUpload.HasFile)
{
//取得上传文件之扩展文件名,并转换成小写字母
string fileExtension = System.IO.Path.GetExtension(fileUpload.FileName).ToLower();
//检查扩展文件名是否符合限定类型
for (int i = 0; i < allowExtensions.Length; i++)
{
if (fileExtension == allowExtensions[i])
{
fileAllow = true;
}
}
//符合上传文件类型
if (fileAllow)
{
try
{
//重命名文件名
fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + fileUpload.FileName;
//存储文件到文件夹
fileUpload.SaveAs(GetServerPath(fileName));
fileUpload.Dispose();
mag = "文件导入成功";
flag = true;
}
catch (Exception ex)
{
mag += ex.Message;
flag = false;
}
}
else
{
mag = "不允许上载:" + fileUpload.PostedFile.FileName + ",只能上传xls和xlsx的文件,请检查!";
flag = false;
}
}
else
{
mag = "请选择要导入的Excel文件!";
flag = false;
}
return flag;
}
调用 bool ft = ExcelImport.UpLoad(FileUpload1, out mag, out filePath);
FileUpload1为。net的上传控件
二,查询出Excel里面的所有工作薄名,根据OUT出来的存放excel的路径
///
/// 获取EXCEL文件中的所有表名(模板类型)(SheetName)
///

/// 文件绝对路径
/// ArrayList集合
public static ArrayList ExcelSheetName(string filepath)
{
ArrayList al = new ArrayList();
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
try
{

conn.Open();
DataTable sheetNames = conn.GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[2]);
}

}
catch (Exception e)
{
Logger.Error("ExcelImport.cs 页面 ExcelSheetName", e);
}
finally
{

conn.Close();
}
return al;
}
调用 //获取导入模板所有的模板表名
ArrayList al = ExcelImport.ExcelSheetName(UpPath);
3.进行工作薄名称的对比
string sheet = null;
//进行判断是否取到想要的sheet1
bool isExists = false;
for (int i = 0; i < al.Count; i++)
{
//获取模板表名
sheet = al[i].ToString();
if (sheet.Equals("sheet1"))
{
//EXCELsheet名是sheet1
isExists = true;
}
}

回答2:

  --如果接受数据导入的表已经存在
  insert into 表 select * from
  OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
  ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

  --如果导入数据并生成表
  select * into 表 from
  OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
  ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)