如何获取excel的所有工作薄的数据

shenjiaxiong 2011-07-12 09:06:16
如何获取excel的所有工作薄的数据,并且要去除空记录,然后存放在临时表里,我现在只能获取第一个工作薄的数据,并且把空白行都获取了。
...全文
126 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
啊兵 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cjsyr_cjsyr 的回复:]

建议使用NPOI,我最近刚用网上这方面资料比较多,对Excel支持的很好。
[/Quote]

使用这个吧.我们公司一直都用这个东东,可以获取到所有的SHEET,连接也不需要oledb.帮助文档现在也比较丰富了.
  • 打赏
  • 举报
回复
http://www.lmwlove.com/Article/ArticleDetail.aspx?ID=364

基本包括了对Excel的所有基础操作
shenjiaxiong 2011-07-13
  • 打赏
  • 举报
回复
也只能用于单个工作薄,不能获取所有工作薄的数据
[Quote=引用 7 楼 fangxinggood 的回复:]
http://blog.csdn.net/fangxinggood/article/details/397315
[/Quote]
flyforfei 2011-07-12
  • 打赏
  • 举报
回复
我弄一个,不太好,自己随便看看

public partial class MainWindow : Window
{
DataSet dsExcel= new DataSet();
string dbFilenameExcel;
string tableNameExcel;


public MainWindow()
{
InitializeComponent();
}

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem mn=sender as MenuItem;
string openExcelFilename="";
string connectionString = "";
switch(mn.Header.ToString())
{
case "Excel97-2003文件":
OpenFileDialog fileOpenExcel03 = new OpenFileDialog();
fileOpenExcel03.Filter = "Excel文件97-2003(*.xls)|*.xls";
if (fileOpenExcel03.ShowDialog() != true)
return;

openExcelFilename = fileOpenExcel03.FileName.Trim();
dbFilenameExcel = fileOpenExcel03.SafeFileName;
connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
openExcelFilename + ";Extended Properties='Excel 8.0'";
break;
case "Excel2007-10文件":
OpenFileDialog fileOpenExcel07 = new OpenFileDialog();
fileOpenExcel07.Filter = "Excel2007-10文件(*.xlsx)|*.xlsx";
if (fileOpenExcel07.ShowDialog() != true)
return;

openExcelFilename = fileOpenExcel07.FileName.Trim();
dbFilenameExcel = fileOpenExcel07.SafeFileName;
connectionString =@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
openExcelFilename + ";Extended Properties='Excel 12.0'";
break;
}
OleDbConnection ODCExcel = new OleDbConnection(connectionString);
SelectWindow selectWin = new SelectWindow();
List<string> tableNames = GetTableNames(ODCExcel);
if (tableNames.Count <= 0)
return;
selectWin.cmbTableList.Items.Clear();
selectWin.cmbTableList.ItemsSource = tableNames;
if (selectWin.ShowDialog() != true)
return;
tableNameExcel = "[" + selectWin.cmbTableList.Text + "]";

string selectString = "select * From " + tableNameExcel;
OleDbDataAdapter ODCAExcel = new OleDbDataAdapter(selectString, ODCExcel);
try
{
dsExcel.Clear();
ODCAExcel.Fill(dsExcel, "tableOpening");
dataGridExcel.ItemsSource = dsExcel.Tables["tableOpening"].DefaultView;
lblMessage.Content = openExcelFilename + ":" + tableNameExcel.Substring(1, tableNameExcel.Length - 3);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);

}

}
//以下省略
BeautyMyth 2011-07-12
  • 打赏
  • 举报
回复
建议使用NPOI,我最近刚用网上这方面资料比较多,对Excel支持的很好。
civilman 2011-07-12
  • 打赏
  • 举报
回复
用Aspose.Cells 或者开源插件myxls-0.6.0,功能很强大的。随便你怎么处理excel,微软自带的功能太弱。
shenjiaxiong 2011-07-12
  • 打赏
  • 举报
回复
不用验证的数据的完整性的,我是想把EXCEL的所有工作薄里的数据都合并起来,并存放在dataset或者datatable中,然后在循环插入MSSQL数据库里
shenjiaxiong 2011-07-12
  • 打赏
  • 举报
回复
有没有具体的思路和方法呢???
子夜__ 2011-07-12
  • 打赏
  • 举报
回复
你的sheet 命名规范吗?

是sheet1 2 这样的就简单些

不是的话先要读名字。
nfclass 2011-07-12
  • 打赏
  • 举报
回复
excel导入很不方便,如果要做数据格式验证就跟麻烦了

62,046

社区成员

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

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

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

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