ExcelManager--基于.Net的Excel读写管理类库(二)
ExcelManager类库的相关使用手册及源码,DLL文件都在这里
下面是此管理类库的接口类描述,以及相关源码文档使用手册等。
在仅使用时直接引用两个管理类(在DLL.rar包中)即可。
欢迎大家指点。。。
![](/Images/OutliningIndicators/ContractedBlock.gif)
接口类
1![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//* -----------------------------------------------------------------------
2
* 版权所有: 版权所有(C) 2006,EYE(Ver1.1)
3
* 文件编号: 0003
4
* 文件名称: IExcelManager.cs
5
* 系统编号: E-Eye_0001
6
* 系统名称: SFWL管理系统
7
* 模块编号: 0001
8
* 模块名称: Excel数据管理对象接口
9
* 设计文档:
10
* 完成日期: 2006-5-12 10:33:56
11
* 作 者: 林付国
12
* 内容摘要: 完成Excel数据管理对象API接口定义
13
* 属性描述: 该接口有10个属性
14
* 01 DataSource 数据源
15
* 02 Title Excel文件表格标题
16
* 03 FilePath 源文件路径
17
* 04 XMLFilePath XML架构文件路径
18
* 05 IsOpen 判断Excel管理对象是否已经打开
19
* 06 WriteType 写入类型(普通,重写,追加)
20
* 07 SheetName Sheet表名称
21
* 08 BackColor 背景颜色
22
* 09 ForeColor 字体颜色
23
* 10 Font 字体样式
24
* 方法描述: 该接口包括10个方法:
25
* 01 Open 打开Excel管理对象
26
* 02 Read 读取Excel文件中有效行列数据集
27
* 03 ReadCell 读取某单元格的内容
28
* 04 ReadCell 读取某单元格的内容,按行,列方式
29
* 05 Write 写入至Excel文件中
30
* 06 ReWrite 按照指定重写行重写数据
31
* 07 WriteCell 写数据至单元格
32
* 08 Close 资源释放
33
* 09 OpenCreate 打开Excel管理对象,若Excel文件不存在则创建之
34
* 10 ActiveSheet 激活当前读写数据的Sheet表
35
* 文件调用:无
36
* 约 束:1.执行导出机器上需要装有Office组件,且Excel文件版本在2000以上
37
* 2.Excel读文件目前仅支持单工作簿,单工作表读取
38
* 3.需读取Excel文件,在第一行必须依次存储二个范围,用于限定参数状态位,依次为:需要读取的起始单元格名称,结束单元格名称
39
* 4.需读取的每个Excel数据文件,必须有于之配对的同名XML架构文件(扩展项可支持不同文件名,不推荐此项)
40
* 5.写文件时,推荐先建立空Excel文件(扩展项可支持自动创建Excel文件,不推荐此项),本版本暂不提供数据插入功能
41
* 6.写入至Excel文件,提供(普通,Insert重写,Append追加)三种操作方式
42
* 数据量的大小要求单次写入:行1--60000以内,列1-255,Cell值长度1-255字符
43
* 目前写操作仅支持单工作簿,最大存在32个Sheet,每Sheet最大存储量为60000行
44
* 7.其它约束按照.Net框架及Microsoft Office Excel相关约定。
45
* -----------------------------------------------------------------------
46
* */
47![](/Images/OutliningIndicators/None.gif)
48
using System;
49
using System.Collections;
50
using System.Data;
51![](/Images/OutliningIndicators/None.gif)
52
namespace las.foundation.Interfaces
53![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
54![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// 类 编 号: 01
55
/// 类 名 称: IExcelManager
56
/// 内容摘要: Excel管理对象接口
57
/// 完成日期: 2006-5-12 14:36:51
58
/// 编码作者: 林付国
59
public interface IExcelManager : IDisposable
60![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
61![](/Images/OutliningIndicators/ContractedSubBlock.gif)
Property#region Property
62![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
63
/// 数据源
64
/// </summary>
65![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
DataSet DataSource
{get;set;}
66![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
67
/// Excel文件表格标题
68
/// </summary>
69![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
string Title
{get;set;}
70![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
71
/// 源文件路径
72
/// </summary>
73![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
string FilePath
{get;set;}
74![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
75
/// XML架构文件路径
76
/// </summary>
77![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
string XMLFilePath
{get;set;}
78![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
79
/// 判断Excel管理对象是否已经打开
80
/// </summary>
81
/// <returns></returns>
82![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
bool IsOpen
{get;}
83![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
84
/// Excel文件写入类型
85
/// </summary>
86![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
EnumType.WriteType WriteType
{get;set;}
87![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
88
/// Sheet表名称
89
/// </summary>
90![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
string SheetName
{get;set;}
91![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
92
/// 背景颜色
93
/// </summary>
94![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
System.Drawing.Color BackColor
{get;set;}
95![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
96
/// 字体颜色
97
/// </summary>
98![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
System.Drawing.Color ForeColor
{get;set;}
99![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
100
/// 字体样式
101
/// </summary>
102![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
System.Drawing.Font Font
{get;set;}
103
#endregion
104![](/Images/OutliningIndicators/InBlock.gif)
105![](/Images/OutliningIndicators/ContractedSubBlock.gif)
Private Method#region Private Method
106![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
107
/// 打开Excel管理对象
108
/// </summary>
109
/// <returns></returns>
110
bool Open();
111![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
112
/// 读取Excel文件中有效行列数据集
113
/// </summary>
114
/// <returns></returns>
115
DataSet Read();
116![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
117
/// 读取某单元格的内容
118
/// </summary>
119
/// <param name="strCell">单元格名称</param>
120
/// <returns></returns>
121
string ReadCell(string strCell);
122![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
123
/// 读取某单元格内容,按行列参数方式
124
/// </summary>
125
/// <param name="iRow"></param>
126
/// <param name="iCol"></param>
127
/// <returns></returns>
128
string ReadCell(int iRow,int iCol);
129![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
130
/// 写入数据集到Excel文件
131
/// </summary>
132
/// <returns></returns>
133
bool Write();
134![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
135
/// 重写数据集到Excel文件,指定重写行
136
/// </summary>
137
/// <param name="iRow"></param>
138
/// <returns></returns>
139
bool ReWrite(int iRow);
140![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
141
/// 写数据至单元格
142
/// </summary>
143
bool WriteCell(int iRow,int iCol,string strValue);
144![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
145
/// 活动的Sheet表
146
/// </summary>
147
/// <param name="sheetindex"></param>
148
void ActiveSheet(EnumType.SheetIndex sheetindex);
149![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
150
/// 资源释放
151
/// </summary>
152
void Close();
153![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
154
/// 打开并创建此对象
155
/// </summary>
156
/// <returns></returns>
157
bool OpenCreate();
158
#endregion
159
}
160
}
161
在仅使用时直接引用两个管理类(在DLL.rar包中)即可。
欢迎大家指点。。。
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
2
![](/Images/OutliningIndicators/InBlock.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/dot.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
61
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
66
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
83
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
87
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
90
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
98
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
102
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
106
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/InBlock.gif)
156
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
159
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
160
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
161
![](/Images/OutliningIndicators/None.gif)
1.使用说明
word使用手册
相关DLL文件
2.所有源码
sourcecode1
sourcecode2
(可以下载了,下载后把文件解压到某一文件夹中即可)(传不上去文件,凌晨时传的非常好,现在修改后传不上去了,估计是我这网络问题,唉,算了,改天传吧)
好了,基本上需要用到的东东都已经发出来的,如果那里还有没说明白的地方,欢迎与我联系,共同探讨!另外,对JavaExcelAPI有研究的朋友,如有时间可以一起考虑将其转为.net版本的啊,毕竟有需求。
注:C#版本的JavaExcelAPI在SF上已被重构,感兴趣的朋友可去SF下载:
http://sourceforge.net/projects/nexcel
(以前未作细查,感谢精浪的提醒)
终于发完了,哇塞,快两点了,太晚了,偶要睡去了...
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步