个人关于Cemail.vol 文件

本文详细介绍了Outlook中邮件的存储结构,包括pmailFolders、pmailMsgs等关键表的作用,以及邮件从接收至存储的全过程。
原贴地址:http://blog.youkuaiyun.com/Leroy_xie/archive/2007/08/09/1734986.aspx Cemail.vol 中 有: 1.pmailFolders 文件夹的表用于指定inbox ,outbox ,draft等各种邮件的文件夹! 2 pmailMsgs,它是邮件与文件夹的关联中介,也是附件与邮件的关联中介,是整个邮件系统的关联体,存储邮件与文件夹的关系! 3.pmailMsgClasses 该表存储了邮件的类型名( 如 IPM。Note指一般的邮件, IPM。Shedule.Meeting 指通知类邮件等等!) 4.pmailNamedProps 作用未知! 5 pmailAttachs 存储附件与pmailMsgs的关系以及附件的一些信息! 6.fldr3100001d 收件箱,存储了邮件与pmailMsgs 的关系,与 pmailMsgClasses的关系,以及邮件的一些信息(时间,收件人,发件人,时间等)! 7.fldr31000020 Deleted Items 等等fldr。。表都是根据pmailFolders建立 添加一封邮件 注:每条记录的0x8001写的是记录自己的CEOID! 1. 在pmailFolders中找存放邮件的文件夹,获取文件夹记录的0x8001和0x8005两个字段的值 ,0x8001是文件夹记录的CEOID,0x8005是根目录的CEOID! 2. 在pmailMsgs中建立一条记录,把pmailFolders中获得的0x8001和0x8005两个字段的CEOID分别写到pmailMsgs中的0x0e09和 0x8011两个字段中 3. 同时在对应的文件夹中生成一条记录,比如,如果是inbox中收到的邮件,那就是在对应的fldr3100001d表中生成一条新的记录,记录包含了邮件的收件人,发件人,时间等内容! 4. fldr3100001d 中0x001a 字段需要根据邮件的类型在pmailMsgClasses 中寻找相应的类型(pmailMsgClasses的0x8300字段保存了类型),比如普通邮件的类型为IPM。Note,找到后把类型记录的 CEOID值写入fldr3100001d的0x001a 字段中。这时的邮件记录就具有了邮件的所有属性! 5. 再把pmailMsgs的0x8006字段更新为fldr3100001d中该邮件记录CEOID值,把 fldr3100001d 的0x8005字段更新为 pmailMsgs中刚生成的记录CEOID值。相当与两个表中同时生成的两个记录相互存储彼此的CEOID值。这样邮件和文件夹就形成了关联。 6. 根据pmailMsgs这条记录找到fldr3100001d中对应的记录如果发现fldr3100001d中的 0x0e1b字段为1的话,就在pmailAttachs中建立一条记录把pmailMsgs 中记录的CEOID值 写入0x8100 字段中,这条记录保存附件的信息,同时由于pmailMsgs中记录的写入使得附件和邮件关联了起来。 收到一封邮件的过程也就结束了,这时邮件和附件,文件夹形成了关联!!
**高校专业实习管理平台设计与实现** 本设计项目旨在构建一个服务于高等院校专业实习环节的综合性管理平台。该系统采用当前主流的Web开发架构,基于Python编程语言,结合Django后端框架与Vue.js前端框架进行开发,实现了前后端逻辑的分离。数据存储层选用广泛应用的MySQL关系型数据库,确保了系统的稳定性和数据处理的效率。 平台设计了多角色协同工作的管理模型,具体包括系统管理员、院系负责人、指导教师、实习单位对接人以及参与实习的学生。各角色依据权限访问不同的功能模块,共同构成完整的实习管理流程。核心功能模块涵盖:基础信息管理(如院系、专业、人员信息)、实习过程管理(包括实习公告发布、实习内容规划、实习申请与安排)、双向反馈机制(单位评价与学生反馈)、实习支持与保障、以及贯穿始终的成绩评定与综合成绩管理。 在技术实现层面,后端服务依托Django框架的高效与安全性构建业务逻辑;前端界面则利用Vue.js的组件化特性与LayUI的样式库,致力于提供清晰、友好的用户交互体验。数据库设计充分考虑了实习管理业务的实体关系与数据一致性要求,并保留了未来功能扩展的灵活性。 整个系统遵循规范的软件开发流程,从需求分析、系统设计、编码实现到测试验证,均进行了多轮迭代与优化,力求在功能完备性、系统性能及用户使用体验方面达到较高标准。 **核心术语**:实习管理平台;Django框架;MySQL数据库;Vue.js前端;Python语言。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
<think>我们之前的讨论主要集中在R语言中创建数据框和从Excel导入数据,但现在用户的问题是询问如何保存CSV文件。根据引用[3]提到了在R中使用readr包的write_csv函数保存CSV文件,以及引用[4]展示了在PHP中生成CSV文件内容并保存的代码片段。用户现在想了解保存CSV文件的方法,因此我们需要提供多种语言环境下保存CSV文件的方法,并强调CSV文件的特性(如引用[2]所述)。 由于用户之前的上下文是使用R语言,所以我们将重点放在R上,但为了全面性,也会简要介绍其他语言(如Python和PHP)的方法。 保存CSV文件的方法: 1. R语言: - 使用基础R的write.csv函数: ```r # 将数据框df保存为CSV文件,row.names=FALSE表示不保存行名 write.csv(df, "data.csv", row.names = FALSE, fileEncoding = "UTF-8") ``` - 使用readr包的write_csv函数(速度更快,不保存行名): ```r library(readr) write_csv(df, "data.csv") ``` 2. Python语言(引用[1]): - 使用csv模块: ```python import csv with open('data.csv', 'w', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile) writer.writerows(data) # data是一个二维列表 ``` - 使用pandas库(更简便): ```python import pandas as pd df.to_csv('data.csv', index=False, encoding='utf-8') ``` 3. PHP(引用[4]): - 手动构建CSV字符串并写入文件: ```php $fileContent = "customer_id,oNum,today,shipping,email,ccType,shipInstruct,shipName\n"; // 添加数据行 $fileContent .= $data['customer_id'] . ',' . $data['oNum'] . ',' . $today . ',' . $data['cShipService'] . ' ' . $data['cShipMethod'] . ',' . $data['cEmail'] . ',' . $data['ccType'] . ',' . $data['cShipInstruct'] . ',' . $data['cShipFname'] . ' ' . $data['cShipLname'] . "\n"; // 保存到文件 file_put_contents('data.csv', $fileContent); ``` 或者使用fputcsv函数: ```php $file = fopen('data.csv', 'w'); fputcsv($file, array('customer_id', 'oNum', 'today', ...)); // 表头 foreach ($dataArray as $row) { fputcsv($file, $row); } fclose($file); ``` 关于CSV文件的注意事项(引用[2]): - CSV文件以纯文本形式存储表格数据,每条记录由换行符分隔,字段由逗号分隔。 - 优点:格式简单,文件体积小,易于读写和跨平台交换。 - 缺点:不能存储复杂的格式(如图像、公式等),数据类型信息可能丢失(所有数据都是字符串形式)。 因此,在选择保存为CSV文件时,需要根据数据特性和使用场景来决定。如果数据包含复杂结构或需要保留格式,则应考虑其他格式(如Excel)。 相关问题: 1. 在R中,如何避免保存CSV文件时出现中文乱码? 2. 如何将包含逗号或换行符的字段正确保存到CSV文件中? 3. 如何追加数据到已有的CSV文件中? </think>### 如何保存CSV文件:多语言实现指南 保存CSV文件是数据处理中的基础操作,以下是不同编程语言的专业实现方法: #### 1. **R语言**(推荐方法) ```r # 使用readr包(高效,保留中文编码) library(readr) write_excel_csv(df, "水质数据.csv") # 保留Excel兼容格式[^3] # 基础方法(处理特殊字符) write.csv(df, "data.csv", row.names = FALSE, fileEncoding = "UTF-8", na = "NA") ``` #### 2. **Python** ```python import csv with open('data.csv', 'w', newline='', encoding='utf-8-sig') as f: writer = csv.writer(f) writer.writerow(["年份", "断面名称", "高锰酸盐指数(mg/L)"]) # 表头[^1] writer.writerows(data_rows) # 数据行 ``` > 技巧:`utf-8-sig`编码确保Excel打开时中文正常显示 #### 3. **PHP** ```php header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=data.csv'); $output = fopen('php://output', 'w'); fputcsv($output, ["年份", "断面名称", "总磷浓度(mg/L)"]); // 写入表头[^4] foreach ($data as $row) { fputcsv($output, $row); // 逐行写入数据 } fclose($output); ``` #### 4. **通用注意事项** 1. **编码问题**:始终使用UTF-8编码避免乱码 2. **特殊字符处理**:字段含逗号时需用双引号包裹,如:`"长江,南京段"` 3. **性能优化**:大数据集使用分块写入(Python可用`pandas`,R可用`data.table::fwrite`) 4. **文件规范**: - 扩展名使用`.csv` - 首行为列名 - 每行记录用换行符分隔 - 默认分隔符为逗号(可配置为分号等) #### 5. **CSV vs Excel** | 特性 | CSV | Excel | |-------------|-------------------------|-----------------------| | 文件大小 | 小(纯文本)[^2] | 大(二进制格式) | | 公式/图表 | 不支持[^2] | 支持 | | 打开速度 | 快 | 慢 | | 数据类型 | 全文本 | 保留原始数据类型 | > 建议:数据交换用CSV,复杂分析用Excel[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值