C# DataTbale导出txt和xls附源码和调用Demo例子.docx
- 文档编号:803583
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:13
- 大小:37.80KB
C# DataTbale导出txt和xls附源码和调用Demo例子.docx
《C# DataTbale导出txt和xls附源码和调用Demo例子.docx》由会员分享,可在线阅读,更多相关《C# DataTbale导出txt和xls附源码和调用Demo例子.docx(13页珍藏版)》请在冰豆网上搜索。
C#DataTbale导出txt和xls附源码和调用Demo例子
C#DataTbale导出txt和xls
1、C#代码类设计
2、详细代码设计
2.1导出接口IExporter
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceHX.Common
{
publicclassIExporter
{
protectedstring_ExportSaveFileName="";
publicstringExportSaveFileName
{
get
{
return_ExportSaveFileName;
}
}
publicIExporter()
{
}
publicvirtualvoidExport(System.Data.DataTabledt,boolisShow=false){}
protectedvoidOpenFile(stringfileName)
{
Cursor_currentCursor=Cursor.Current;
Cursor.Current=Cursors.WaitCursor;
Cursor.Current=_currentCursor;
try
{
System.Diagnostics.Processps=newSystem.Diagnostics.Process();
ps.StartInfo.FileName=fileName;
ps.StartInfo.Verb="Open";
ps.StartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Normal;
ps.Start();
}
catch(Exceptionex)
{
thrownewException(string.Format("未能打开该文件,原因:
{0}",ex.Message.Trim()));
}
}
///
///打开文件
///
publicvoidOpenFile()
{
OpenFile(this._ExportSaveFileName);
}
}
}
publicenumExportType
{
[Description("MicrosoftExcel|*.xls")]
Excel,
[Description("(*.txt)|*.txt|"+"(*.*)|*.*")]
Txt
}
publicstaticclassEnumOperate
{
publicstaticstringGetDescriptionFromEnumValue(Enumvalue)
{
DescriptionAttributeattribute=value.GetType()
.GetField(value.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute),false)
.SingleOrDefault()asDescriptionAttribute;
returnattribute==null?
value.ToString():
attribute.Description;
}
publicstaticTGetEnumValueFromDescription
{
vartype=typeof(T);
if(!
type.IsEnum)
thrownewArgumentException();
FieldInfo[]fields=type.GetFields();
varfield=fields
.SelectMany(f=>f.GetCustomAttributes(
typeof(DescriptionAttribute),false),(
f,a)=>new{Field=f,Att=a})
.Where(a=>((DescriptionAttribute)a.Att)
.Description==description).SingleOrDefault();
returnfield==null?
default(T):
(T)field.Field.GetRawConstantValue();
}
}
2.2Xls导出类classExporterXls
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Data;
usingSystem.Windows.Forms;
usingSystem.IO;
usingMicrosoft.Office.Interop.Excel;
usingSystem.ComponentModel;
namespaceHX.Common
{
publicclassExporterXls:
IExporter
{
publicoverridevoidExport(System.Data.DataTabledt,boolisShow=false)
{
SaveFileDialogsaveFileDialog1=IniSaveFileDialog(EnumOperate.GetDescriptionFromEnumValue(ExportType.Excel));
if(saveFileDialog1.ShowDialog()==DialogResult.Cancel)
{
thrownewException(string.Format("导出中断,原因:
用户取消操作!
"));
}
ExportAsTxt(dt,saveFileDialog1);
_ExportSaveFileName=saveFileDialog1.FileName;
if(isShow)
{
OpenFile(saveFileDialog1.FileName);
}
}
///
///导出excel,实际为txt格式
///
///
///
privatevoidExportAsTxt(System.Data.DataTabledt,SaveFileDialogsaveFileDialog1)
{
StreammyStream;
myStream=saveFileDialog1.OpenFile();
//StreamWritersw=newStreamWriter(myStream,System.Text.Encoding.GetEncoding("gb2312"));
StreamWritersw=newStreamWriter(myStream,System.Text.Encoding.GetEncoding("gb2312"));
Stringstr="";
//写标题
for(inti=0;i
{
if(i>0)
{
str+="\t";
}
str+=dt.Columns[i].ColumnName;
}
sw.WriteLine(str);
//写内容
for(introwNo=0;rowNo
{
Stringtempstr="";
for(intcolumnNo=0;columnNo
{
if(columnNo>0)
{
tempstr+="\t";
}
//tempstr+=dg.Rows[rowNo,columnNo].ToString();
tempstr+=dt.Rows[rowNo][columnNo].ToString();
}
sw.WriteLine(tempstr);
}
sw.Close();
myStream.Close();
}
///
///导出EXCEL,适用于数据量不大的情况,(条目小于3000)
///
///
///
///
///
privateboolExportToExcel(stringtitle,System.Data.DataTabledt,boolisShowExcel=false)
{
inttitleColumnSpan=0;//标题的跨列数
stringfileName="";//保存的excel文件名
intcolumnIndex=1;//列索引
if(dt.Rows.Count==0)
returnfalse;
/*保存对话框*/
SaveFileDialogsfd=newSaveFileDialog();
sfd.Filter="导出Excel(*.xls)|*.xls";
sfd.FileName=DateTime.Now.ToString("yyyyMMddhhmmss");
if(sfd.ShowDialog()==DialogResult.OK)
{
fileName=sfd.FileName;
/*建立Excel对象*/
Microsoft.Office.Interop.Excel.Applicationexcel=newMicrosoft.Office.Interop.Excel.Application();
if(excel==null)
{
MessageBox.Show("无法创建Excel对象,可能您的计算机未安装Excel!
");
returnfalse;
}
try
{
excel.Application.Workbooks.Add(true);
excel.Visible=isShowExcel;
/*分析标题的跨列数*/
foreach(DataColumncolumnindt.Col
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# DataTbale导出txt和xls附源码和调用Demo例子 DataTbale 导出 txt xls 源码 调用 Demo 例子