zoukankan      html  css  js  c++  java
  • .net读取Lotus Domino文件数据库并写入DataTable中

    上一篇文章是简单的读取并输出,这里稍微加深一点,将读取到的内容按字段存入DataTable中。

     1 StringBuilder sb = new StringBuilder();
     2             NotesSession ns = new NotesSession();
     3             //ns.Initialize("test1234");
     4             ns.Initialize();
     5             if (ns == null)
     6             {
     7                 MessageBox.Show("未能初始化");
     8                 return;
     9             }
    10             //NotesDatabase db = ns.GetDatabase("", @"names.nsf", false);
    11             NotesDatabase db = ns.GetDatabase("", @"todo/120006.nsf", false);
    12             if (db == null)
    13             {
    14                 MessageBox.Show("未能初始化数据库");
    15                 return;
    16             }
    17             NotesView view = db.GetView(@"V5\01.待办文件");
    18             if (view == null) return;
    19             DataTable dt = new DataTable();
    20             object[] cols = view.ColumnNames;
    21             Dictionary<int, object> dic = new Dictionary<int, object>();
    22             if (cols != null)
    23             {
    24                 int ix = 0;
    25                 foreach (object obj in cols)
    26                 {
    27                     dic.Add(ix, obj);
    28                     if (obj != null)
    29                     {
    30                         sb.Append(string.Format("{0};", obj));
    31                         if (!dt.Columns.Contains(obj.ToString()))
    32                         {
    33                             DataColumn dc = new DataColumn(obj.ToString());
    34                             dt.Columns.Add(dc);
    35                         }
    36                         
    37                     }
    38                     ix++;
    39                 }
    40             }
    41             NotesDocument doc = view.GetFirstDocument();
    42             while (doc != null)
    43             {
    44                 object[] objs = (object[])doc.ColumnValues;
    45                 if (objs == null) return;
    46                 int ix = 0;
    47                 DataRow dr = dt.NewRow();
    48                 foreach (object obj in objs)
    49                 {
    50                     if (obj == null) continue;
    51                     KeyValuePair<int, object> kv = dic.FirstOrDefault(m => m.Key == ix);
    52                     Type tp = obj.GetType();
    53                     if (tp.Name.Contains("Object[]"))
    54                     {
    55                         object[] nobjs = (object[])obj;
    56                         List<string> list = new List<string>();
    57                         foreach (var nobj in nobjs)
    58                         {
    59                             sb.Append(string.Format("{0}\r\n", nobj));
    60                             list.Add(string.Format("{0}",nobj));
    61                         }
    62                         dr[kv.Value.ToString()] = string.Join("|", list);
    63                     }
    64                     else
    65                     {
    66                         sb.Append(string.Format("{0}\r\n", obj));
    67                         dr[kv.Value.ToString()] = obj;
    68                     }
    69                     ix++;
    70                 }
    71                 dt.Rows.Add(dr);
    72                 doc = view.GetNextDocument(doc);
    73             }
  • 相关阅读:
    poj1860 Currency Exchange
    poj1062 昂贵的聘礼
    CF811C Vladik and Memorable Trip
    vs2012 jsoncpp 链接错误
    poj1923 Fourier's Lines
    excel中的表格转换成word中表格
    C:Program FilesMSBuildMicrosoft.Cppv4.0V110Microsoft.CppCommon.targets(249,5): error MSB6006: “CL.exe”已退出,代码为 -1073741515。
    poj1129 Channel Allocation
    POJ 2771 Guardian of Decency(求最大点独立集)
    POJ 1724 Roads
  • 原文地址:https://www.cnblogs.com/ymworkroom/p/6773448.html
Copyright © 2011-2022 走看看