1. 使用该类SPDocumentLibrary来实现一些对文档库的操作,文档库只是列表的一种特殊类型,所以当我们使用如下代码的时候,显示出的list是包括文档库的。
SPWeb site = SPContext.Current.Web;
foreach (SPList list in site.Lists)
{
// 所有的列表,当然也包括文档库
}
2. 文档库和列表的主要不同点是文档库是用来存储文档的,SPDocumentLibrary类是继承自SPList的,所以当你获得SPList对象的时候就可以判断该列表是否为文档库
public bool IsListAlsoDocumentLibrary(SPList list)
{
if(list is SPDocumentLibrary)
return true;
else
return false;
}
3. 站点可能有很多隐藏的文档库,比如webpart库,站点模板库,母板页库,我们可以把他们显示在一个DropDownList中,代码如下:
SPWeb site = SPContext.Current.Web;
foreach (SPList list in site.Lists)
{
if(list is SPDocumentLibrary && !list.Hidden)
{
SPDocumentLibrary docLib = (SPDocumentLibrary)list;
lstTargetLibrary.Items.Add(new ListItem(docLib.Title, docLib.ID.ToString()));
}
}
4.1 由于文档库在wss的object model中也是SPList,所以每一个文档也是一个SPlistItem对象,然而在文档库中的文档
也可以为一个SPFile对象,所以我们可以通过这两种方法是操作。
void ProcessDocuments(SPDocumentLibrary docLib) { foreach(SPListItem item in docLib.Items) { // 操作SPListItem对象 SPFile file = item.File; // 操作SPFile 对象 } }
4.2 SPListItem对象记录了一个文档的ID,对栏元数据的读写,如下代码:
foreach (SPListItem item in docLib.Items)
{
int itemID = item.ID; // 读元数据栏信息
string clientColumnValue = item["Client"].ToString();
//写元数据栏信息
item["Client"] = "AdventureWorks";
item.Update();
}
4.3 SPFile一般来控制文档的内容,比如下面代码:
foreach (SPListItem item in docLib.Items)
{
if(item.FileSystemObjectType == SPFileSystemObjectType.File)
{
SPFile file = item.File;
int versionCount = file.Versions.Count;
// 是否被签出
DateTime checkedOutDate = file.CheckedOutDate;
// 基于流的方式打开处理
using(Stream fileContents = file.OpenBinaryStream())
{}
}
}
5. 这里需要注意的是如果文档库中有文件夹的时候,对应object model为一个内容为SPListItem的Items的集合,所以上面的代码中我在把SPListItem转换为SPFile前来判断SPFileSystemObjectType属性。
如果你仅仅想把站点中文档库都列举出来,你还可以通过如下方法:
void ProcessDocumentsAtRoot(SPDocumentLibrary docLib)
{
foreach (SPFile file in docLib.RootFolder.Files)
{
// program against file using SPFile class
}
}
6.1 添加一个新的文件到文档库中,下面是主要代码:
protected void CreateDocument()
{
SPSite siteCollection = SPContext.Current.Site;
SPWeb site = SPContext.Current.Web;
Guid libraryID = new Guid(lstTargetLibrary.SelectedValue);
SPDocumentLibrary library = (SPDocumentLibrary)site.Lists[libraryID];
string documentName = txtFileName.Text;
string libraryRelativePath = library.RootFolder.ServerRelativeUrl;
string libraryPath = siteCollection.MakeFullUrl(libraryRelativePath);
string documentPath = libraryPath + "/" + documentName;
Stream documentStream = new MemoryStream();
StreamWriter writer = new StreamWriter(documentStream);
writer.Write(txtDocumentBody.Text);
writer.Flush();
Hashtable docProperties = new Hashtable();
docProperties["vti_title"] = "This is a test title";
docProperties["Color"] = "Green";
site.Files.Add(documentPath, documentStream, docProperties, true);
Response.Redirect(libraryPath);
}
6.2 使用上面代码创建的文档,我们只是指定了"vti_title"和"Color"两个元数据的信息,wss默认为我们生成了许多,我们可以通过下面的代码来查看系统到底为我们做了什么?
SPList list = site.Lists["CaryPro"];
foreach (SPListItem item in list.Items)
{
SPFile file = item.File;
foreach (DictionaryEntry entry in file.Properties)
{
Console.WriteLine(entry.Key + ":" + entry.Value);
}
break;
}
7 使用Feature创建新的文档库实例
7.1 你可以使用网站设置中的UI,也可以自定义一个基于某个内容类型的文档库,我们可以Feature方式提供某个标准文档库的实例,如下设置:
<ListInstance
FeatureId="00BFEA71-E717-4E80-AA17-D0C71B360101"
TemplateType="101"
Id="CaryPro"
Description="Document Library for CaryPro"
OnQuickLaunch="True"
Title="CaryPro"
Url="CaryPro"
>
</ListInstance>
FeatureId必须是个GUID,TemplateType需要为文档库的类型,就是101
7.2 下面的配置为,在TestData目录有相应的文档,这些文档会默认就放到该文档库中
<Module Name="TestData" List="101" Path="TestData" Url="CaryPro" >
<File Url="AdventureCaryPro.docx" Type="GhostableInLibrary" />
<File Url="ContosoCaryPro.docx" Type="GhostableInLibrary" />
<File Url="WingtipCaryPro.docx" Type="GhostableInLibrary" />
</Module>
7.3 设置默认的文档库模板
<Module Name="WordTemplate" List="101" Url="CaryPro/Forms">
<File Url="CaryProTemplate.dotx" Type="GhostableInLibrary" />
</Module>
7.4 FeatureActivated中创建文档库
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb site = (SPWeb)properties.Feature.Parent;
SPDocumentLibrary libProposals = (SPDocumentLibrary)site.Lists["CaryPro"];
string templateUrl = @"CaryPro/Forms/CaryProTemplate.dotx";
libProposals.DocumentTemplateUrl = templateUrl;
libProposals.Update();
}
发表评论
-
平淡的2007
2007-12-24 08:04 813早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1410今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 887[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 633[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 781[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1141[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 918当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 834Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 841在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 692我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1176MOSS中有两种页面:Site P ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 701本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 829本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 754WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1054由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 792[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 686[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 729[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1098一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 944首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
- 使用 `web.Lists.Add()` 创建新列表,提供列表标题、描述和模板类型,例如创建文档库:`web.Lists.Add("微软产品文档", "存放日常的一些产品文档资料", SPListTemplateType.DocumentLibrary)`。 4. **转换为文档...
`,这样就可以使用Word对象模型中的类和方法。 3. **初始化Word应用和文档对象**: 创建一个新的Word应用程序实例,如`Word.Application app = new Microsoft.Office.Interop.Word.Application();`,接着打开文档...
2. **DOM操作**:库中包含一系列便捷的DOM(文档对象模型)操作接口,如选择元素、添加删除元素、事件绑定等,使得DOM操作更加简单。 3. **函数工具**:qp-library包含了各种函数工具,如延迟执行、防抖、节流等,...
- 编辑文档内容:使用Word对象模型,如`Document.Content.Text`,`Paragraphs.Add()`等方法插入文本、段落、表格等。 - 保存和关闭文档:使用`Document.SaveAs()`保存文档,`Document.Close()`关闭文档,`...
在这个目录下,开发者可以找到用C#编写的类和方法,如PDF文档对象模型、页面管理、绘图操作等。 5. **Tests**: 这个目录可能包含了项目的测试代码,用于验证库的功能是否正常工作。测试代码通常使用单元测试框架...
Word对象模型包括Application、Document、Selection和Range四个主要对象。 * Application:用来表现WORD应用程序,包含其它所有对象。 * Document:Document对象是WORD编程的核心。 * Selection:Selection对象是...
1. **对象模型**:VB中的Word操作基于Office的COM对象模型,其中包含了多个层次的对象,如Application、Document、Range等。Application对象代表Word应用本身,Document对象表示单个文档,Range对象用于选中文档中的...
4. **引用Word对象库**:在VBA项目中,要操作Word文档,需先在VBA编辑器的“工具”菜单下选择“引用”,然后勾选“Microsoft Word Object Library”。 5. **创建Word对象**:通过VBA可以创建Word对象,如`Dim wdApp...
在IT行业中,尤其是在软件开发领域,经常会涉及到不同应用程序之间的交互,比如使用编程语言来控制其他应用程序的操作。在本例中,我们关注的是如何利用Visual Studio(VC)来操作Microsoft Word,实现对Word文档的...
这个组件包含了各种对象模型,这些模型允许程序通过COM(Component Object Model)接口直接操作Office文件,实现自动化处理、数据提取、文档生成等一系列功能。 首先,我们来了解一下什么是DLL(Dynamic Link ...
PCL库,全称为Point Cloud Library,是一款强大的开源C++库,主要用于3D点云处理。这个1.9版本的离线帮助文档包含了丰富的信息,旨在帮助开发者更好地理解和使用PCL进行三维数据处理。解压后的文件中,`index.html`...
3. **设置Automation**:引用Microsoft.Office.Interop.Word或Microsoft.Office.Interop.Excel库,这些库提供了与Word和Excel对象模型交互的接口。 4. **编程打开文档**:在代码中,实例化Word或Excel应用对象,...
这里的关键是导入`Microsoft Word 11.0 Object Library`库,这使得我们可以访问Word对象模型中的所有类和方法。以下是创建新Word文档的基本步骤: ```csharp using Word = Microsoft.Office.Interop.Word; object ...
在VC中,可以使用MSXML库实现DOM模型,通过IXMLDOMDocument对象来表示整个XML文档,IXMLDOMNode表示文档中的每个节点。 - DOM模型允许开发者以任意顺序访问和修改XML文档的任何部分,但缺点是如果XML文件很大,加载...
一旦添加了引用,你就可以创建Office应用的实例,并使用它的对象模型来操作文档。例如,如果你要打开并显示一个Word文档,可以这样做: ```csharp using Microsoft.Office.Interop.Word; // 创建Word应用程序实例 ...
- 使用`com.jacob.com.Dispatch`类来访问Word对象模型,如打开文档(`Dispatch.call(wordApp, "Open", filePath)`)、保存文档(`Dispatch.call(doc, "SaveAs", newFile, 17)`)等。 3. **模板文件的使用**: - ...
4. 对象模型:Word对象模型包括Application(应用程序)、Document(文档)、Selection(选择)、Range(范围)、Bookmark(书签)等。了解这些对象的功能和相互关系对于编写代码至关重要。例如,Range可以代表文档...
总结起来,"VC DLL操作WORD"涉及的关键技术包括使用VC开发DLL、引用Word的类型库(OLB)来操作Word对象模型,以及在DLL中封装Word功能。这种技术在实际应用中非常常见,例如开发自动化办公软件、文档处理工具等。通过...
Android作为一个开源的操作系统,虽然原生并不直接支持Microsoft Office系列的DOC、XLS、PPT等格式的文档阅读,但开发者可以通过第三方库或者自定义实现来处理这些文件。 首先,对于DOC和XLS文档的解析,我们可以...