如何获得excel的工作表名?

xingyu923 2004-09-29 11:14:59
我想做一个把excel中的数据导入数据库的程序,首先选择excel表,然后在下拉列表框中显示所选择的*.xls所包含的工作表,请问该如何实现?
...全文
156 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cancersyf 2004-10-04
  • 打赏
  • 举报
回复
参考这篇文章--
Retrieve Excel Workbook Sheet Names:
http://www.codeproject.com/aspnet/getsheetnames.asp
bpmfwu 2004-09-30
  • 打赏
  • 举报
回复
楼上的完全不对,是生成Excel抓取名字,和楼主需要的大相径庭。
Eddie005(暴走005) 可以参考一下。
Eddie005 2004-09-29
  • 打赏
  • 举报
回复
如果工作表名试不定的那么通过下面的方法可以取出来
这只是个例子,需要自己扩展一下
/// <summary>
/// 将指定Excel文件中读取第一张工作表的名称
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
private static string GetSheetName(string filePath)
{
string sheetName="";

System.IO.FileStream tmpStream=File.OpenRead(filePath);
byte[] fileByte=new byte[tmpStream.Length];
tmpStream.Read(fileByte,0,fileByte.Length);
tmpStream.Close();

byte[] tmpByte=new byte[]{Convert.ToByte(11),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),
Convert.ToByte(11),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),
// Convert.ToByte(11),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),
// Convert.ToByte(11),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),Convert.ToByte(0),
Convert.ToByte(30),Convert.ToByte(16),Convert.ToByte(0),Convert.ToByte(0)};

int index=GetSheetIndex(fileByte,tmpByte);
if(index>-1)
{
// index+=32+12;
index+=16+12;
System.Collections.ArrayList sheetNameList=new System.Collections.ArrayList();

for(int i=index;i<fileByte.Length-1;i++)
{
byte temp=fileByte[i];
if(temp!=Convert.ToByte(0))
sheetNameList.Add(temp);
else
break;
}
byte[] sheetNameByte=new byte[sheetNameList.Count];
for(int i=0;i<sheetNameList.Count;i++)
sheetNameByte[i]=Convert.ToByte(sheetNameList[i]);

sheetName=System.Text.Encoding.Default.GetString(sheetNameByte);
}
return sheetName;
}
/// <summary>
/// 只供方法GetSheetName()使用
/// </summary>
/// <returns></returns>
private static int GetSheetIndex(byte[] FindTarget,byte[] FindItem)
{
int index=-1;

int FindItemLength=FindItem.Length;
if(FindItemLength<1) return -1;
int FindTargetLength=FindTarget.Length;
if((FindTargetLength-1)<FindItemLength) return -1;

for(int i=FindTargetLength-FindItemLength-1;i>-1;i--)
{
System.Collections.ArrayList tmpList=new System.Collections.ArrayList();
int find=0;
for(int j=0;j<FindItemLength;j++)
{
if(FindTarget[i+j]==FindItem[j]) find+=1;
}
if(find==FindItemLength)
{
index=i;
break;
}
}
return index;
}
xingyu923 2004-09-29
  • 打赏
  • 举报
回复
不好意思,我找不到你说的那个“SQLSERVER的导入功能里面生成一个DTS”,在哪里可以设一下呢?
SeeSunSet 2004-09-29
  • 打赏
  • 举报
回复
建议你在SQLSERVER的导入功能里面生成一个DTS,这样就可以自动生成该DTS的VB的源代码,导入过程里面都有记录.将代码改成公共函数用就可以了.
tianjue0921 2004-09-29
  • 打赏
  • 举报
回复
Excel.Application mex = new Excel.ApplicationClass();
Excel.Workbook mwb = mex.Workbooks.Open(@""+file.Value+"",Type.Missing ,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
Excel.Worksheet mws = (Excel.Worksheet)mwb.Sheets[1];
string name = mws.Name ;
mwb.Close(false,Type.Missing ,Type.Missing );
name就是工作表的名字
oudy 2004-09-29
  • 打赏
  • 举报
回复
Dim strConn As String
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strFile & ";" & "Extended Properties=Excel 8.0;"
Dim conn As OleDbConnection
Dim oda As OleDbDataAdapter
Dim commb As OleDbCommandBuilder
Dim dt As DataTable
Dim strSheetName As String '工作表的名称
Dim strComText As String 'sql语句
Dim Ds As DataSet '得到的数据集
conn = New OleDbConnection(strConn)
oda = New OleDbDataAdapter(strConn, conn)
conn.Open()
commb = New OleDbCommandBuilder(oda)
dt = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
将dt邦定到DropDownlist,TextField,ValueField应该是"TABLE"中就可以了
剩下的就不用说了吧
'以上为得到Excel中工作表的名字,表的第二列表示工作表的名称
strComText = "SELECT * FROM [" & strSheetName & "]"
可以将excle文件导入SQL SERVER 的工具,一个将excel文件导入到SQLServer表中的程序 一 双击Input.exe运行程序,将弹出一个窗口,这时请你在"数据库名"后面的输入栏中输入数据库名(如果是千方百剂就是输入帐套名).你如果没对数据库的登录进行特殊修改的话,那"用户名和密码"就没必要修改了. 二 填好以上输入框后,真接单击"连接数据库",如果连接成功,将弹出"数据库连接成功,你现在可以导入数据"的对话框,你按"OK"后将弹出新的一个数据导入的窗口. 三 在这个窗口上单击"打开EXCEL文件"按钮,然后选择你要导入的Excel文件,按打开(这时如果你数据比较多的话你可能要多等一会儿时间),之后就弹出一个让你选择Excel工作区的窗口,你可以在下拉框中选择你数据所在的Excel工作区了.选完以后按确定,你可以看到你Excel里的数据已经在"Excel数据信息"里面了.而且还可以看到多了一列"不导入"的选项了.你如果哪一行的数据不导入的话你可以打勾,这一行将不被导入. 四 做完以上三步后,请在"表名"后面的下拉框中选择你所要导入的表的名称.选完后,你得到"数据转换信息如下"这一栏配置数据转换的对应关系. 五 双击Excel字段处从下拉框中选择excel的列,双击表字段处从下拉框中选择SQL表的列,然后看这列是否是"关键字",是的话打勾,不是不打勾.选择完第一行后,就按方向键的向下键,继续第二行的选择,直到配置完Excel列和表字段的对应关系为止. 六 按"导入数据"按钮系统会自动将页面转到"转换信息"这一页面.你将可以看到第几行导入成功,或第几行导入失改的信息.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧