zoukankan      html  css  js  c++  java
  • OLDB创建xlsx文件

    C#通过OLDB连接Excel文件时,如果文件不存在,会自动创建文件,用起来非常方便。

    Excel2003的xls格式,使用Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" + "Extended Properties='Excel 8.0'"

    Excel2007以后的xlsx格式,使用"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};" + "Extended Properties='Excel 12.0'" 

    要使用ACE.OLEDB.12.0,需要下载一个组件AccessDatabaseEngine

    http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

    另外要特别说明一下,自动创建xlsx格式,使用上面的连接时,文件能创建,但是打开时,会提示"excel 无法打开文件 因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。"

    解决方法就是在连接后面再加一个参数,如下:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};" + "Extended Properties='Excel 12.0 XML'"

    添加,删除、修改时不用加。

    View Code
            private void button2_Click(object sender, EventArgs e)
            {
                Create("D:\\text.xlsx""测试","你,好");
                Insert("D:\\text.xlsx""测试""123123""4567");
                Insert("D:\\text.xlsx""测试""123123""4567");
                Insert("D:\\text.xlsx""测试""123123""4567");
                Insert("D:\\text.xlsx""测试""123123""4567");
                Insert("D:\\text.xlsx""测试""123123""4567");
                Insert("D:\\text.xlsx""测试""123123""4567");
                MessageBox.Show("ok");
            }

            private bool Create(string sFilePath, string sSheetName, string sCols)
            {
                try
                {
                    var sConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};" + "Extended Properties='Excel 12.0 XML;HDR=YES'", sFilePath);

                    using (var conn = new OleDbConnection(sConn))
                    {
                        conn.Open();
                        var cmd = new OleDbCommand { Connection = conn };
                        if (sSheetName.LastIndexOf('$') > 0)
                        {
                            sSheetName = sSheetName.Substring(sSheetName.Length - 1);
                        }
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandTimeout = 3600;
                        var sql = new StringBuilder();
                        sql.Append("CREATE TABLE [" + sSheetName + "](");

                        var arrCols = sCols.Split(',');
                        for (var i = 0; i < arrCols.Length; i++)
                        {
                            sql.Append("[" + arrCols[i] + "] text,");
                        }
                        sql = sql.Remove(sql.Length - 11);
                        sql.Append(")");
                        cmd.CommandText = sql.ToString();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        return true;
                    }
                }
                catch (Exception ex)
                {
                    return false;
                }
            }

            private bool Insert(string sFilePath, string sTable, string sSendPhone, string sSendCount)
            {
                var sConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};" + "Extended Properties='Excel 12.0 XML'", sFilePath);
                try
                {
                    using (var conn = new OleDbConnection(sConn))
                    {
                        conn.Open();
                        var cmd = new OleDbCommand { Connection = conn };
                        var sCmdTxt = string.Format("Insert Into {0} Values('{1}','{2}')", sTable, sSendPhone, sSendCount);
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandTimeout = 3600;
                        cmd.CommandText = sCmdTxt;
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }

                    return true;
                }
                catch (Exception ex)
                {
                    return false;
                }
            }
  • 相关阅读:
    springboot2 + prometheus + grafana 监控整合
    vs code 快捷键总结
    java8 concurrecy
    java8 localdatetime timestamp 转换
    有意思的网站
    评价搜索引擎质量
    转载一篇文章
    csdn 站点使用
    百度站点平台
    好的文章聚合站点
  • 原文地址:https://www.cnblogs.com/chendaoyin/p/2674822.html
Copyright © 2011-2022 走看看