用OleDb方式连接excel,无法删除默认sheet的问题

ayun00 2013-10-08 10:46:33
现在 写入 数据 已经没有问题了,

但是 我create table 生成的表 只能在默认的 sheet1 后面,

现在能不能把 sheet1删除掉, 或者让我create 的表在第一位?

我用 drop table 只能清空 sheet1 的内容 ,不能删除 sheet1
...全文
338 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuezt 2015-12-24
  • 打赏
  • 举报
回复
同样需求等待中。。。
xuezt 2015-12-24
  • 打赏
  • 举报
回复
同样需求等待中。。。
xuezt 2015-12-24
  • 打赏
  • 举报
回复
同样需求等待中。。。
吕津 2014-06-02
  • 打赏
  • 举报
回复
明白楼主的concern. 支持一下!
ayun00 2013-10-16
  • 打赏
  • 举报
回复
自己顶一下!
ayun00 2013-10-09
  • 打赏
  • 举报
回复
1. 你这只是读excel的数据源 , 和 把不同的表插入excel 是不同的概念 2. 你这依然是读表名,不是改表名
引用 3 楼 kkkkkxiaofei 的回复:
1.参考下这个

//以datatable的形式返回sheet的内容
       public DataTable ShowSheet(string filePath, string sheetName)
       {
           string strConn = FatherForm.xml._excConn1 + filePath + FatherForm.xml._excConn2;
           OleDbConnection conn = new OleDbConnection(strConn);
           conn.Open();
           string sql = "select * from [" + sheetName + "$]";
           OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
           DataTable dt = new DataTable();
           da.Fill(dt);
           conn.Close();
           return dt;
       }
都能返回一个dt,插入到sheet不难,这里就不写了。 2.

//返回所有sheet名
       public string[] ImportExcel(string filePath)
       {
           string strConn = FatherForm.xml._excConn1 + filePath + FatherForm.xml._excConn2;
           OleDbConnection conn = new OleDbConnection(strConn);
           conn.Open();

           DataTable dt=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"table"});
           int len=dt.Rows.Count;
           string[] sheetNames = new string[len];
           int start;
           for (start = 0; start < len; start++)
           {
               string allName=dt.Rows[start]["TABLE_NAME"].ToString();
               sheetNames[start] = allName.Replace("$","");//remove $ sysmbol
           }          
           conn.Close();
           return sheetNames;
       }
ayun00 2013-10-09
  • 打赏
  • 举报
回复
我现在就是不想用excel com 方式, 使用这种方式老是碰到各种意外
引用 5 楼 jdcj413 的回复:
#region 去除多余SHEET for (int i = m_objBook.Sheets.Count; i >= 1; i--) { Excel.Worksheet worksheetDataDel = (Excel.Worksheet)m_objBook.Sheets.get_Item(i); if (worksheetDataDel.Name.ToLower() == "sheet1" || worksheetDataDel.Name.ToLower() == "sheet2" || worksheetDataDel.Name.ToLower() == "sheet3") { worksheetDataDel.Delete(); } } #endregion
cjh200102 2013-10-09
  • 打赏
  • 举报
回复
楼上可以试下
jdcj413 2013-10-09
  • 打赏
  • 举报
回复
#region 去除多余SHEET for (int i = m_objBook.Sheets.Count; i >= 1; i--) { Excel.Worksheet worksheetDataDel = (Excel.Worksheet)m_objBook.Sheets.get_Item(i); if (worksheetDataDel.Name.ToLower() == "sheet1" || worksheetDataDel.Name.ToLower() == "sheet2" || worksheetDataDel.Name.ToLower() == "sheet3") { worksheetDataDel.Delete(); } } #endregion
  • 打赏
  • 举报
回复
那你就不会先drop table把sheet1清空,然后把你自己create的table贴在sheet1里,再把sheet1的名字改了嘛。。。
  • 打赏
  • 举报
回复
1.参考下这个

//以datatable的形式返回sheet的内容
       public DataTable ShowSheet(string filePath, string sheetName)
       {
           string strConn = FatherForm.xml._excConn1 + filePath + FatherForm.xml._excConn2;
           OleDbConnection conn = new OleDbConnection(strConn);
           conn.Open();
           string sql = "select * from [" + sheetName + "$]";
           OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
           DataTable dt = new DataTable();
           da.Fill(dt);
           conn.Close();
           return dt;
       }
都能返回一个dt,插入到sheet不难,这里就不写了。 2.

//返回所有sheet名
       public string[] ImportExcel(string filePath)
       {
           string strConn = FatherForm.xml._excConn1 + filePath + FatherForm.xml._excConn2;
           OleDbConnection conn = new OleDbConnection(strConn);
           conn.Open();

           DataTable dt=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"table"});
           int len=dt.Rows.Count;
           string[] sheetNames = new string[len];
           int start;
           for (start = 0; start < len; start++)
           {
               string allName=dt.Rows[start]["TABLE_NAME"].ToString();
               sheetNames[start] = allName.Replace("$","");//remove $ sysmbol
           }          
           conn.Close();
           return sheetNames;
       }
ayun00 2013-10-08
  • 打赏
  • 举报
回复
引用 1 楼 kkkkkxiaofei 的回复:
那你就不会先drop table把sheet1清空,然后把你自己create的table贴在sheet1里,再把sheet1的名字改了嘛。。。
我每次create的表都不一样,是insert不进sheet1的, 另外 oledb 怎么修改 execel 工作薄 名的?

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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