例如:'附表1 $'_ 带下划线的非sheet出现
2,如何获取某个指定名称的sheet工作表之前的工作表名。
例如:仅获取名称为“回单”的sheet'工作表单之前的所以sheet表
12 个解决方案
#1
看看,我刚刚在下面这个帖子(2楼)中贴出来的代码:
http://topic.csdn.net/u/20080601/21/ba831acf-6bd5-4f61-81e6-e50502431b5e.html
http://topic.csdn.net/u/20080601/21/ba831acf-6bd5-4f61-81e6-e50502431b5e.html
#2
非常感谢CNBT的支持,刚刚看了你的链接,与我的问题不是一会事,不过还是谢谢你
#3
会的,看到一定要留言。谢谢了
#4
你是要获取excel中的数据,还是要获取execl的sheet页面名称?
#5
读取excel的数据
写入、
private DataSet BindDsFromExcel(string strFileDir, string strDataName)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFileDir + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [" + strDataName + "$]";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, strDataName);
OleConn.Close();
return OleDsExcle;
}
写入、
private bool SaveRowToExcel(string[] matchRow)
{
try
{
Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.Application();//创建Excel表
Microsoft.Office.Interop.Excel.Workbook myWorkbook = myExcel.Workbooks._Open(strFileDir,
Missing.Value, Missing.Value, Missing.Value, Missing.Value
, Missing.Value, Missing.Value, Missing.Value, Missing.Value
, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet xSheet =
(Microsoft.Office.Interop.Excel.Worksheet)myExcel.Sheets["Match_POI"];
int size = xSheet.UsedRange.Rows.Count;//读取最后一行
int col = matchRow.Length;
for (int j = 0; j < col; j++)
{
string sheet = matchRow[j];//获取要写入到Excel的string
xSheet.Cells[size + 1, j + 1] = sheet;//写入excel。cells[行,列]
//比如你想三行二列的值为abc。那么xSheet.Cells[3,2] = "abc";即可,我这里是循环写入。
}
myWorkbook.Save();
xSheet = null;
myWorkbook = null;
myExcel.Quit();//一定要退出
myExcel = null;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return true;
}
#6
我想获取sheet名称。
例如:一个excel里有“南京”,“上海”,“北京”,“杭州”,“天津”,“国内”,“纽约”,“东京”这几个sheet页。
我如何仅仅获取“国内”sheet页前面的sheet名称,即仅获取“南京”,“上海”,“北京”,“杭州”,“天津”。
前提条件:这些sheet页不是固定的,可能还会动态添加,但是国内的城市一定是位于“国内”sheet页前面。
我就只要获取“国内”之前的sheet页
另外一个问题就是:明明只有三个sheet工作表单,但是用GetOleDbSchemaTable获取,却多出几个当$_的sheet
例如,原来excel里只有sheet1,sheet2,sheet3三个工作表单,但是会查出sheet1,sheet2,sheet3,sheet2$Print_Area多于的;
个人感觉是因为sheet2里面有自动筛选的功能,或者其他高级功能导致的,但是不知道应该如何仅仅只取sheet1,sheet2,sheet3
例如:一个excel里有“南京”,“上海”,“北京”,“杭州”,“天津”,“国内”,“纽约”,“东京”这几个sheet页。
我如何仅仅获取“国内”sheet页前面的sheet名称,即仅获取“南京”,“上海”,“北京”,“杭州”,“天津”。
前提条件:这些sheet页不是固定的,可能还会动态添加,但是国内的城市一定是位于“国内”sheet页前面。
我就只要获取“国内”之前的sheet页
另外一个问题就是:明明只有三个sheet工作表单,但是用GetOleDbSchemaTable获取,却多出几个当$_的sheet
例如,原来excel里只有sheet1,sheet2,sheet3三个工作表单,但是会查出sheet1,sheet2,sheet3,sheet2$Print_Area多于的;
个人感觉是因为sheet2里面有自动筛选的功能,或者其他高级功能导致的,但是不知道应该如何仅仅只取sheet1,sheet2,sheet3
#7
是不是没有办法可以解决啊?高手路过的,看一下
#8
端午节大家都在休息啊,在么没有人会我的贴呢:(。
会的,不会的,一起讨论一下。
会的,不会的,一起讨论一下。
#9
UPDATE 楼主问题解决没,我出碰到和你一样的问题。
#10
求解!我也正遇到了这个问题。
#11
我的需求和遇到的问题和你完全一样,不知你解决了没有
#12
是不是
GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" });
这里的参数需要怎么设置啊
GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" });
这里的参数需要怎么设置啊
#1
看看,我刚刚在下面这个帖子(2楼)中贴出来的代码:
http://topic.csdn.net/u/20080601/21/ba831acf-6bd5-4f61-81e6-e50502431b5e.html
http://topic.csdn.net/u/20080601/21/ba831acf-6bd5-4f61-81e6-e50502431b5e.html
#2
非常感谢CNBT的支持,刚刚看了你的链接,与我的问题不是一会事,不过还是谢谢你
#3
会的,看到一定要留言。谢谢了
#4
你是要获取excel中的数据,还是要获取execl的sheet页面名称?
#5
读取excel的数据
写入、
private DataSet BindDsFromExcel(string strFileDir, string strDataName)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFileDir + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [" + strDataName + "$]";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, strDataName);
OleConn.Close();
return OleDsExcle;
}
写入、
private bool SaveRowToExcel(string[] matchRow)
{
try
{
Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.Application();//创建Excel表
Microsoft.Office.Interop.Excel.Workbook myWorkbook = myExcel.Workbooks._Open(strFileDir,
Missing.Value, Missing.Value, Missing.Value, Missing.Value
, Missing.Value, Missing.Value, Missing.Value, Missing.Value
, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet xSheet =
(Microsoft.Office.Interop.Excel.Worksheet)myExcel.Sheets["Match_POI"];
int size = xSheet.UsedRange.Rows.Count;//读取最后一行
int col = matchRow.Length;
for (int j = 0; j < col; j++)
{
string sheet = matchRow[j];//获取要写入到Excel的string
xSheet.Cells[size + 1, j + 1] = sheet;//写入excel。cells[行,列]
//比如你想三行二列的值为abc。那么xSheet.Cells[3,2] = "abc";即可,我这里是循环写入。
}
myWorkbook.Save();
xSheet = null;
myWorkbook = null;
myExcel.Quit();//一定要退出
myExcel = null;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return true;
}
#6
我想获取sheet名称。
例如:一个excel里有“南京”,“上海”,“北京”,“杭州”,“天津”,“国内”,“纽约”,“东京”这几个sheet页。
我如何仅仅获取“国内”sheet页前面的sheet名称,即仅获取“南京”,“上海”,“北京”,“杭州”,“天津”。
前提条件:这些sheet页不是固定的,可能还会动态添加,但是国内的城市一定是位于“国内”sheet页前面。
我就只要获取“国内”之前的sheet页
另外一个问题就是:明明只有三个sheet工作表单,但是用GetOleDbSchemaTable获取,却多出几个当$_的sheet
例如,原来excel里只有sheet1,sheet2,sheet3三个工作表单,但是会查出sheet1,sheet2,sheet3,sheet2$Print_Area多于的;
个人感觉是因为sheet2里面有自动筛选的功能,或者其他高级功能导致的,但是不知道应该如何仅仅只取sheet1,sheet2,sheet3
例如:一个excel里有“南京”,“上海”,“北京”,“杭州”,“天津”,“国内”,“纽约”,“东京”这几个sheet页。
我如何仅仅获取“国内”sheet页前面的sheet名称,即仅获取“南京”,“上海”,“北京”,“杭州”,“天津”。
前提条件:这些sheet页不是固定的,可能还会动态添加,但是国内的城市一定是位于“国内”sheet页前面。
我就只要获取“国内”之前的sheet页
另外一个问题就是:明明只有三个sheet工作表单,但是用GetOleDbSchemaTable获取,却多出几个当$_的sheet
例如,原来excel里只有sheet1,sheet2,sheet3三个工作表单,但是会查出sheet1,sheet2,sheet3,sheet2$Print_Area多于的;
个人感觉是因为sheet2里面有自动筛选的功能,或者其他高级功能导致的,但是不知道应该如何仅仅只取sheet1,sheet2,sheet3
#7
是不是没有办法可以解决啊?高手路过的,看一下
#8
端午节大家都在休息啊,在么没有人会我的贴呢:(。
会的,不会的,一起讨论一下。
会的,不会的,一起讨论一下。
#9
UPDATE 楼主问题解决没,我出碰到和你一样的问题。
#10
求解!我也正遇到了这个问题。
#11
我的需求和遇到的问题和你完全一样,不知你解决了没有
#12
是不是
GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" });
这里的参数需要怎么设置啊
GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" });
这里的参数需要怎么设置啊