.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             }
时间: 2024-10-10 10:36:27

.net读取Lotus Domino文件数据库并写入DataTable中的相关文章

.net读取Lotus Domino文件数据库

Domino有组件支持.net,虽然感觉支持的不太好,但是能用,安装组件的方法很简单,在NuGet中联机搜索Domino,然后根据需要安装即可. 开发时,要在开发机上安装Notes客户端,网上很多,这里不赘述,直接上简易读取代码: 1 NotesSession ns = new NotesSession(); 2 //ns.Initialize("test1234"); 3 ns.Initialize(); 4 if (ns == null) 5 { 6 MessageBox.Show

读取指定路径的Excel内容到DataTable中

1 /// <summary> 2 /// 读取指定路径的Excel内容到DataTable中 3 /// </summary> 4 /// <param name="path"></param> 5 /// <returns></returns> 6 public DataTable ImportToDataSet(string path) 7 { 8 string strConn = "Provide

ASP.NET中修改从数据库获取的datatable中的值

有些时候,我们从数据库表中获取一个实体的对象,但有些内容并不是最终显示的内容,格式也都是不一样.经过一番尝试,发现datatable中的数值如果跟想要改变的类型不一致,就无法更改,只有添加新列,然后把想要显示的最终的数据赋给这一新列.在进行数据展示的时候,展示这一新列即可. 下附代码: public DataTable GetDT(string attName, int typeValue) { DataTable dt=dal.GetDT(attName,typeValue); DataCol

使用NPOI读取Excel的数据,插入到DataTable中

笔者最近遇到一个项目,需要做一个SSIS Package,修改Excel的列名,并在ssms中创建job自动执行,项目需求比较简单,由于笔者做过的Package比较少,所以经历了一番曲折. 我首先想到的是使用NPOI,在Script task中使用NPOI.dll,但是在使用NPOI时,Script task不能将NPOI自动导入到.net framework,需要执行一个gacutil的脚本,有点麻烦,放弃. 其次,我想到 Microsoft.Office.Interop.Excel.dll

使用OpenXML将Excel内容读取到DataTable中

前言:前面的几篇文章简单的介绍了如何使用OpenXML创建Excel文档.由于在平时的工作中需要经常使用到Excel的读写操作,简单的介绍下使用 OpenXML读取Excel中得数据.当然使用OpenXML将数据读取成什么格式并不重要,本文仅仅介绍如何读取到DataTable中. 准备工作: 1. Excel2007文档一个: 2. OpenXML库:DocumentFormat.OpenXml.dll: 3. Console项目一个,添加对OpenXML库和WindowsBase.dll的引用

Asp.Net写入读取Xml(处理文件权限)

1,网上关于读取写入Xml的博客比较多,参考了发现提到Xml文件权限的博客比较少.因为在开发中我发现,如果文件存于一些没有权限的路径,代码是访问不到该文件,页面会报错提示403,Forbidden.意思是禁止,也就是没有权限.需要用代码给文件EveryOne赋予完全控制权限.希望我的博客能帮助一些在权限方面遇到问题的朋友. 2,判断文件文件夹和文件是否存在(写入时会自动创建Xml,但是如果没有权限,会创建失败,所以我觉得先用FileStream把文件创建出来比较保险); public strin

读取Excel二进制写入DB,并从DB中读取生成Excel文件

namespace SendMailSMSService { class Program { static void Main(string[] args) { var connString = SqlDataHelper.GetConnectionString<FileContent>(); //读取Excle文件并写入表中 var bytes = File.ReadAllBytes("a.xlsx"); var entity = new FileContent { Fi

fmt 国际化格式标签库(读取application.properties文件)

国际化格式标签库包括国际化,消息和数字日期格式化: (1) 国际化:<fmt:setLocale> <fmt::requestEncoding> 如: <%@ page language="java" contentType="text/html; charset=gb2312" import="java.util.*"%> <%@ taglib prefix="c" uri=&quo

Java基础-输入输出-2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt

2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt package Test03; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import jav