Andy 胡

导航

C#写Excel(OleDB)

先辟谣(至少对Excel2010来说)

IMEX ( IMport EXport mode )设置
IMEX 有三种模式,各自引起的读写行为也不同,容後再述:
0 is Export mode:只能写入
1 is Import mode:只能读取
2 is Linked mode (full update capabilities):读写均可
我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:
当IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
IMEX=2的是写不了的,还不如不加.0:写,1读
IMEX=1 / IMEX=2:不能修改表“用户”的设计。它在只读数据库中。

上代码:
using System;
using System.Data;
using System.Data.OleDb;

namespace ConsoleApplication2 {
    class Program {
        static void Main(string[] args) {
            const string strPath = @"..\MyTable.xlsx";
            OleDbConnection _conn = null;

            _conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
                                        + strPath
                                        + ";Extended Properties='Excel 12.0;IMEX=0'");
            try
            {
                _conn.Open();
                string sqlDropTb = "DROP TABLE   [用户]";
                string sqlCreate = "CREATE TABLE [用户] ([ID]  INTEGER, [姓名]  VarChar)";
                string sqlInsert = "INSERT INTO  [用户] VALUES ( 1, 'Andy' )";
                string sqlUpdate = "UPDATE       [用户] SET [姓名] = 'Cat' WHERE  [ID]=1";
                OleDbCommand _cmd = new OleDbCommand(sqlDropTb, _conn);
                Console.WriteLine(_cmd.ExecuteNonQuery() + "行受影响 Drop");

                _cmd = new OleDbCommand(sqlCreate, _conn);
                Console.WriteLine(_cmd.ExecuteNonQuery() + "行受影响 Create");

                _cmd = new OleDbCommand(sqlInsert, _conn);
                Console.WriteLine(_cmd.ExecuteNonQuery() + "行受影响 Insert");

                _cmd = new OleDbCommand(sqlUpdate, _conn);
                Console.WriteLine(_cmd.ExecuteNonQuery() + "行受影响 Update");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (_conn != null)
                {
                    _conn.Close();
                    _conn = null;
                }
            }
            Console.ReadKey();
        }
    }
}

优点:像写数据库一样写Excel

缺点:只能像写数据库一样写Excel

 

posted on 2017-03-26 11:35  talkwah  阅读(353)  评论(0编辑  收藏  举报