zoukankan      html  css  js  c++  java
  • .net导入Excel数据遇到问题(SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDataso) .

    这些天一直在做.net导入导出Excel的程序。在这里写一下过程和遇到的问题。

    一 》excel导入:excel导入有多种方式,我这里用到的是sqlserver的组件'Ad Hoc Distributed Queries,具体的执行语句:select *  FROM OpenDataSource ('Microsoft.Jet.OLEDB.4.0','Data Source="c:\\2012.xls"; User ID=;Password=; Extended properties=Excel 5.0')...[Sheet$]。只需要执行上面语句,就可以把excel数据导入系统,我这里的excel的结构是固定的,所以不想要太多的判断。

    执行时遇到异常:“SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配的       一 部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。”

    解决办法:  --启用Ad Hoc Distributed Queries:新建查询,输入
          exec sp_configure 'show advanced options',1
          reconfigure
          exec sp_configure 'Ad Hoc Distributed Queries',1
           reconfigure
     --使用完成后,关闭Ad Hoc Distributed Queries:
          exec sp_configure 'Ad Hoc Distributed Queries',0
          reconfigure
          exec sp_configure 'show advanced options',0
          reconfigure 

    二 》excel导出:我这里用到的是bcp的导出功能,

           /// <summary>
            /// 根据sql语句导出excel数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="txtFile"></param>
            /// <returns></returns>
            public static string  BaseDataOut( string sql, string txtFile)
            {
                string result = "导出成功!";
                try
                {
                    string filePath = txtFile + @"c:\test.xls";
                   
                    // 导出文件
                    ProcessStartInfo info = new ProcessStartInfo();
                    info.FileName = "bcp.exe";
                    string s = @" "" " + sql + @" "" queryout """ + filePath + @"""  -c -t -S  """ + ConfigurationSettings.AppSettings["server"].Trim() + @""" -U  """ + ConfigurationSettings.AppSettings["user"].Trim() + @""" -P """ + ConfigurationSettings.AppSettings["password"] + @"""";
                    string d = s;
                    string c =  @" ""  select top 1  * from  test.dbo.TWMJYZBA  "" queryout ""c:\t2.xls"" -c -q -S ""."" -U ""sa"" -P ""szbti@123""  ";
                    string f = c;
                    info.Arguments = @" "" " + sql + @" "" queryout """ + filePath + @"""  -c -t -S  """ + ConfigurationSettings.AppSettings["server"].Trim() + @""" -U  """ + ConfigurationSettings.AppSettings["user"].Trim() + @""" -P """ +  ConfigurationSettings.AppSettings["password"]+@""""; //@" ""  select top 1  * from  test.dbo.T_WMJYZBA  "" queryout ""c:\t2.xls"" -c -q -S ""."" -U ""sa"" -P ""szbti@123""  ";
                    info.WindowStyle = ProcessWindowStyle.Hidden;
                    Process proc = Process.Start(info);
                    proc.WaitForExit();
                }
                catch  (Exception ex){
                    result = "导出出错,请联系管理员!";
                }
                return result;
            }

  • 相关阅读:
    java判断一个字符串是否包含某个字符
    Java去掉Html标签的方法
    如何转换成utf-8格式的,在jsp页面中正常显示换行
    a标签设置手型
    a标签置灰不可点击
    校验手机号码格式
    用JQuery 判断某个属性是否存在hasAttr的解决方法
    验证手机号码 (包含166和199)
    获取短信验证码倒计时
    Noisy Channel模型纠正单词拼写错误
  • 原文地址:https://www.cnblogs.com/MyBeN/p/2676849.html
Copyright © 2011-2022 走看看