`

C#把DataSet内数据转化为Excel和Word文件的通用类

阅读更多

前不久因为项目的需要写的一个C#把DataSet内数据转化为Excel和Word文件的通用类,这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之。最后请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Word;
using Microsoft.Office.Core;
using OWC=Microsoft.Office.Interop;
using System.Reflection;
using System.Text;
namespace CaOnLine.ZWDB.DFObject
{
/// <summary>
/// ExportFiles 的摘要说明。
/// 作用:把DataSet数据集内数据转化为Excel、Word文件
/// 描述:这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后
/// 生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之。
/// 备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。
/// </summary>

public class ExportFiles
{
/// <summary>
///
/// </summary>
///
#region //构造函数

public ExportFiles()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#endregion



/// <summary>
/// 调用Excel.dll导出Excel文件
/// </summary>
/// <param name="ds"></param>
///
#region // 调用Excel.dll导出Excel文件
/// <summary>
///
/// </summary>
/// <param name="ds">DataSet数据庥</param>
/// <param name="Duser">登录用户(如session["username"].Tostring())可为null或空</param>
/// <param name="titlename">添加一个报表标题</param>
/// <param name="filepath">指定文件在服务器上的存放地址(如:Server.MapPath("."))可为null或空</param>
///
/// 为什么在这里设置个filepath?
/// 原因如下:filepath接收的内容是Server.MapPath(".")这个参数值,这个值在这本类中对
/// System.Web.HttpServerUtility HServer=new System.Web.HttpServerUtility()的引用出错,因为没有继承Page类
/// 所以只能以传值的形式调用了,你有好的办法可以修改,那就再好不过了!
public void DataSetToExcel(DataSet ds,string Duser,string titlename,string filepath)
{
//Microsoft.Office.Interop.Owc11() appowc=new Microsoft.Office.Interop.Owc11();
OWC.Owc11.SpreadsheetClass xlsheet=new Microsoft.Office.Interop.Owc11.SpreadsheetClass();

#region //屏蔽内容
///本来想用下面的这个办法实现的,可在IIS中必须设置相关的权限
///所以就放弃了,把代码设置为屏蔽内容,供学习参考!
///
//Microsoft.Office.Interop.Excel.Application app=new Microsoft.Office.Interop.Excel.Application();
//
//if(app==null)
//{
// throw new Exception("系统调用错误(Excel.dll)");
//}
//app.Application.Workbooks.Add(true);
//WorkbookClass oBook=new WorkbookClass();
// WorksheetClass oSheet=new WorksheetClass();
//
////定义表对象与行对象,同时用DataSet对其值进行初始化
//System.Data.DataTable dt=ds.Tables[0];
// oSheet.get_Range(app.Cells[1,1],app.Cells[10,15]).HorizontalAlignment=OWC.Owc11.XlHAlign.xlHAlignCenter;
//DataRow[] myRow=dt.Select();
//int i=0;
//int cl=dt.Columns.Count;
////取得数据表各列标题
//for(i=0;i<cl;i++)
//{
//app.Cells[1,i+1]=dt.Columns[i].Caption.ToString();
////app.Cells.AddComment(dt.Columns[i].Caption.ToString());
////oSheet.Cells.AddComment(dt.Columns[i].Caption.ToString());
////app.Cells=dt.Columns[i].Caption.ToString();
////oSheet.get_Range(app.Cells,app.Cells).HorizontalAlignment=
////app.Cells.AddComment=dt.Columns[i].ToString();
////oSheet.get_Range(app.Cells,app.Cells).HorizontalAlignment=
//}
#endregion

//定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select();
int i=0;
int col=1;
int colday=col+1;
int colsecond=colday+1;
int colnumber=colsecond+1;
int cl=dt.Columns.Count;
string userfile=null;
//合并单元格
xlsheet.get_Range(xlsheet.Cells[col,col],xlsheet.Cells[col,cl]).set_MergeCells(true);

//添加标题名称
if(titlename=="" || titlename==null)
xlsheet.ActiveSheet.Cells[col,col]="添加标题处(高级报表)";
else
xlsheet.ActiveSheet.Cells[col,col]=titlename.Trim();

//判断传值user是否为空
if(Duser=="" || Duser==null)
userfile="DFSOFT";
else
userfile=Duser;

//设置标题大小
xlsheet.get_Range(xlsheet.Cells[col,col],xlsheet.Cells[col,cl]).Font.set_Size(13);

//加粗标题
xlsheet.get_Range(xlsheet.Cells[col,col],xlsheet.Cells[col,cl]).Font.set_Bold(true);
xlsheet.get_Range(xlsheet.Cells[colsecond,col],xlsheet.Cells[colsecond,cl]).Font.set_Bold(true);
//设置标题水平居中
xlsheet.get_Range(xlsheet.Cells,xlsheet.Cells).set_HorizontalAlignment(OWC.Owc11.XlHAlign.xlHAlignCenter);


//设置单元格宽度
//xlsheet.get_Range(xlsheet.Cells,xlsheet.Cells).set_ColumnWidth(9);

xlsheet.get_Range(xlsheet.Cells[colday,col],xlsheet.Cells[colday,cl]).set_MergeCells(true);
xlsheet.ActiveSheet.Cells[colday,col]="日期:"+DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString()+"月"+DateTime.Now.Day.ToString()+"日 ";
xlsheet.get_Range(xlsheet.Cells[colday,col],xlsheet.Cells[colday,cl]).set_HorizontalAlignment(OWC.Owc11.XlHAlign.xlHAlignRight);


//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for(i=0;i<cl;i++)
{
xlsheet.ActiveSheet.Cells[colsecond,i+1]=dt.Columns[i].Caption.ToString();
}
//逐行处理数据
foreach(DataRow row in myRow)
{
//当前数据写入
for(i=0;i<cl;i++)
{
xlsheet.ActiveSheet.Cells[colnumber,i+1]=row[i].ToString().Trim();
}
colnumber++;
}
//设置边框线
xlsheet.get_Range(xlsheet.Cells[colsecond,col],xlsheet.Cells[colnumber-1,cl]).Borders.set_LineStyle(OWC.Owc11.XlLineStyle.xlContinuous);

try
{
//xlsheet.get_Range(xlsheet.Cells[2,1],xlsheet.Cells[8,15]).set_NumberFormat("¥#,##0.00");
//System.Web.HttpServerUtility HServer=new System.Web.HttpServerUtility();

//HServer.MapPath(".")+"//testowc.xls";
xlsheet.Export(filepath+"//exportfiles//~$"+userfile+".xls",OWC.Owc11.SheetExportActionEnum.ssExportActionNone,OWC.Owc11.SheetExportFormat.ssExportXMLSpreadsheet);


}
catch(Exception e)
{
throw new Exception("系统调用错误或有打开的Excel文件!"+e);
}

//Web页面定义
HttpResponse resp;
resp=HttpContext.Current.Response;
resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-disposition","attachment;filename="+userfile+".xls");
resp.ContentType="application/ms-excel";

string path=filepath+"//exportfiles//~$"+userfile+".xls";
System.IO.FileInfo file = new FileInfo(path);
resp.Clear();
resp.AddHeader("content-length",file.Length.ToString());
resp.WriteFile(file.FullName);
resp.End();
}
#endregion

/// <summary>
/// 导出Excel文件类
/// </summary>
/// <param name="ds"></param>
/// <param name="FileName"></param>
///
#region //导出Excel文件类

public void DataSetToExcel(DataSet ds,string FileName)
{
try
{
//Web页面定义
//System.Web.UI.Page mypage=new System.Web.UI.Page();
HttpResponse resp;
resp=HttpContext.Current.Response;
resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-disposition","attachment;filename="+FileName+".xls");
resp.ContentType="application/ms-excel";
//变量定义
string colHeaders=null;
string Is_item=null;

//显示格式定义////////////////


//文件流操作定义
// FileStream fs=new FileStream(FileName,FileMode.Create,FileAccess.Write);
//StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));

StringWriter sfw=new StringWriter();
//定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select();
int i=0;
int cl=dt.Columns.Count;

//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for(i=0;i<cl;i++)
{
//if(i==(cl-1)) //最后一列,加\n
//colHeaders+=dt.Columns[i].Caption.ToString();
//else
colHeaders+=dt.Columns[i].Caption.ToString()+"\t";
}
sfw.WriteLine(colHeaders);
//sw.WriteLine(colHeaders);

//逐行处理数据
foreach(DataRow row in myRow)
{
//当前数据写入
for(i=0;i<cl;i++)
{
//if(i==(cl-1))
// Is_item+=row[i].ToString()+"\n";
//else
Is_item+=row[i].ToString()+"\t";
}
sfw.WriteLine(Is_item);
//sw.WriteLine(Is_item);
Is_item=null;
}
resp.Write(sfw);
//resp.Clear();
resp.End();
}
catch(Exception e)
{
throw e;
}
}
#endregion


/// <summary>
/// 数据集转换,即把DataSet转换为Excel对象
/// </summary>
/// <param name="ds"></param>
/// <param name="FileName"></param>
/// <param name="titlename"></param>
///
#region //运用html+css生成Excel

public void DataSetToExcel(DataSet ds,String FileName,string titlename)
{
string ExportFileName=null;
if(FileName==null || FileName=="")
ExportFileName="DFSOFT";
else
ExportFileName=FileName;

if(titlename=="" || titlename==null)
titlename="添加标题处(高级报表)";

//定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select();
int i=0;
int cl=dt.Columns.Count;


//Web页面定义
HttpResponse resp;

resp=HttpContext.Current.Response;
resp.Clear();
resp.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
resp.AppendHeader("Content-disposition","attachment;filename="+ExportFileName+".xls");
resp.ContentType="application/vnd.ms-excel";

string BeginTab="<table border='0' cellpadding='0' cellspacing='0' style='border-right:#000000 0.1pt solid;border-top:#000000 0.1pt solid;'>";
string EndTab="</table>";
string FileIO=null;
string MainIO=null;
string TitleTab="<tr><td colspan='"+cl+"' style='font-size:30px;' align='center'><b>"+titlename+"</b></td></tr><tr><td colspan='"+cl+"' align='right' style='font-size:15px;'>"+DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString()+"月"+DateTime.Now.Day.ToString()+"日&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>";
string BeginTr="<tr>";
string EndTr="</tr>";
for(i=0;i<cl;i++)
{
FileIO+="<td style='border-left:#000000 0.1pt solid; border-bottom:#000000 1.0pt solid; font-size:15px;' align='center'><b>"+dt.Columns[i].Caption.ToString()+"</b></td>";

}
FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString();

//逐行处理数据
foreach(DataRow row in myRow)
{
string OutIO=null;
//当前数据写入
for(i=0;i<cl;i++)
{
OutIO+="<td style='border-left:#000000 0.1pt solid; border-bottom:#000000 1.0pt solid; font-size:15px;' align='center'>"+row[i].ToString()+"</td>";

}
MainIO+=BeginTr.ToString()+OutIO.ToString()+EndTr.ToString();
}

FileIO="<center><table>"+TitleTab.ToString()+"<tr>"+BeginTab.ToString()+FileIO.ToString()+MainIO.ToString()+EndTab.ToString()+"</tr></table></center>";

resp.Write(FileIO.ToString());
resp.End();

}
#endregion

/// <summary>
/// 导出Word文件类
/// </summary>
/// <param name="ds"></param>
/// <param name="FileName"></param>
///
#region //导出Word文件类

public void DataSetToWord(DataSet ds,string FileName)
{
try
{
//Web页面定义
//System.Web.UI.Page mypage=new System.Web.UI.Page();
HttpResponse resp;
resp=HttpContext.Current.Response;
resp.Clear();
resp.Buffer=true;
resp.Charset="utf-8";
resp.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
resp.AppendHeader("Content-disposition","attachment;filename="+FileName+".doc");
resp.ContentType="application/ms-word";
//变量定义
string colHeaders=null;
string Is_item=null;

//显示格式定义////////////////


//文件流操作定义
// FileStream fs=new FileStream(FileName,FileMode.Create,FileAccess.Write);
//StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));

StringWriter sfw=new StringWriter();
//定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select();
int i=0;
int cl=dt.Columns.Count;

//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for(i=0;i<cl;i++)
{
//if(i==(cl-1)) //最后一列,加\n
//colHeaders+=dt.Columns[i].Caption.ToString();
//else
colHeaders+=dt.Columns[i].Caption.ToString()+"\t";
}
sfw.WriteLine(colHeaders);
//sw.WriteLine(colHeaders);

//逐行处理数据
foreach(DataRow row in myRow)
{
//当前数据写入
for(i=0;i<cl;i++)
{
//if(i==(cl-1))
// Is_item+=row[i].ToString()+"\n";
//else
Is_item+=row[i].ToString()+"\t";
}
sfw.WriteLine(Is_item);
//sw.WriteLine(Is_item);
Is_item=null;
}
resp.Write(sfw);
//resp.Clear();
resp.End();
}
catch(Exception e)
{
throw e;
}

}
#endregion

/// <summary>
/// 数据集转换,即把DataSet转换为Word对象
/// </summary>
/// <param name="ds"></param>
/// <param name="titlename"></param>
///
#region // 运行html+css生成Word文件

public void DataSetToWord(DataSet ds,string FileName,string titlename)
{
//调用Office
//备注:速度太慢放弃应用此方法
//OWC.Word.Application oWord=new OWC.Word.ApplicationClass();
//OWC.Word._Document oDoc=new OWC.Word.DocumentClass();

string ExportFileName=null;
if(FileName==null || FileName=="")
ExportFileName="DFSOFT";
else
ExportFileName=FileName;

if(titlename=="" || titlename==null)
titlename="添加标题处(高级报表)";

//定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select();
int i=0;
int cl=dt.Columns.Count;

#region
//string FileTitle="<center><table><tr><td><b>报表测试</b></td></tr></table>"+"\n";
//string EndFile="</center>";
////Web页面定义
HttpResponse resp;

resp=HttpContext.Current.Response;
resp.Clear();
resp.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
resp.AppendHeader("Content-disposition","attachment;filename="+ExportFileName+".doc");
resp.ContentType="application/vnd.ms-word";
//System.IO.StringWriter oSW=new StringWriter();
// System.Web.UI.HtmlTextWriter oHW=new System.Web.UI.HtmlTextWriter(oSW);
//System.Web.UI.WebControls.DataGrid oDG=new System.Web.UI.WebControls.DataGrid();
// oDG.DataSource=ds.Tables[0];
//oDG.DataBind();
//oDG.RenderControl(oHW);
//resp.Write(FileTitle.ToString()+oSW.ToString()+EndFile.ToString());
//resp.End();
#endregion
string BeginTab="<table border='0' cellpadding='0' cellspacing='0' style='border-right:#000000 0.1pt solid;border-top:#000000 0.1pt solid;'>";
string EndTab="</table>";
string FileIO=null;
string MainIO=null;
string TitleTab="<tr><td style='font-size:13px;' align='center'><b>"+titlename+"</b></td></tr><tr><td align='right' style='font-size:15px;'>"+DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString()+"月"+DateTime.Now.Day.ToString()+"日&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>";
string BeginTr="<tr>";
string EndTr="</tr>";
for(i=0;i<cl;i++)
{
FileIO+="<td style='border-left:#000000 0.1pt solid; border-bottom:#000000 1.0pt solid; font-size:15px;' align='center'><b>"+dt.Columns[i].Caption.ToString()+"</b></td>";

}
FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString();

//逐行处理数据
foreach(DataRow row in myRow)
{
string OutIO=null;
//当前数据写入
for(i=0;i<cl;i++)
{
OutIO+="<td style='border-left:#000000 0.1pt solid; border-bottom:#000000 1.0pt solid; font-size:15px;' align='center'>"+row[i].ToString()+"</td>";

}
MainIO+=BeginTr.ToString()+OutIO.ToString()+EndTr.ToString();
}

FileIO="<center><table>"+TitleTab.ToString()+"<tr>"+BeginTab.ToString()+FileIO.ToString()+MainIO.ToString()+EndTab.ToString()+"</tr></table></center>";

resp.Write(FileIO.ToString());
resp.End();

}
#endregion
}
}

分享到:
评论

相关推荐

    C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例

    前不久因为项目的需要写的一个C#把DataSet内数据转化为Excel和Word文件的通用类,这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后 生成Xml格式,再导入数据库!有些屏蔽内容没有...

    C#开发经验技巧宝典

    0970 DataSet读取XML文件中数据作为数据源 567 0971 如何读取Fox的DBF文件 567 0972 通用方法实现数据增、删、改功能 567 0973 通用方法获取查询结果DataSet数据集 568 0974 同时查询多条SQL语句 568 0975...

    明日科技《C#示例源代码》(5-8)

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 C#源代码例子 C#例子 注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#...

    明日科技《C#示例源代码》(9-12)

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 C#源代码例子 C#例子 注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#...

    明日科技C#示例源码.part02

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 注:一共五部分,请全部下载完成后,放同一目录下解决即可。 目录: 第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的...

    C#编程经验技巧宝典

    72 &lt;br&gt;0102 将字符串首字母转换大写 72 &lt;br&gt;0103 如何进行字节数组和字符串的相互转换 72 &lt;br&gt;0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 &lt;br&gt;4.2 获取字符串信息 73 ...

    明日科技C#示例源码.part04

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 注:一共五部分,请全部下载完成后,放同一目录下解决即可。 目录: 第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的...

    C#示例(配套光盘源码)第五部分

    实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 ...

    C#示例(配套光盘源码)第二部分

    实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 ...

    明日科技C#示例源码.part03

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 注:一共五部分,请全部下载完成后,放同一目录下解决即可。 目录: 第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的...

    明日科技C#示例源码

    实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体...

    C#示例(配套光盘源码)第四部分

    实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 ...

    C#示例(配套光盘源码)第一部分

    实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 ...

    明日科技C#示例源码.part01

    实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 ...

    C#示例(配套光盘源码)第三部分

    实例019 像Excel一样复制DataGridView中的单元格区域数据 69 实例020 DataGridView中单元格合并及添加、显示行号 74 实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 ...

    明日科技《C#示例源代码》(17-20)

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 C#源代码例子 C#例子 注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#...

    明日科技《C#示例源代码》(13-16)

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 C#源代码例子 C#例子 注意:本源代码共有20章节,分五部分上传,名称分别为:明日科技《C#示例源代码》(1-4)、明日科技《C#示例源代码》(1-4)、明日科技《C#...

    ASP.NET 3.5 开发大全word课件

    当然具体本书的作者就不深究了把! 第1章 认识ASP.NET 3.5 1.1 什么是ASP.NET 1.1.1 .NET历史与展望 1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 ...

    asp.net知识库

    在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C#...

Global site tag (gtag.js) - Google Analytics