高分求ASP.NET中用COM组件导出Excel源代码,并且是基于模板的

yuji821 2010-11-23 08:58:18
就实现以下要求就可以了

是Office 2003,有现成的模板,把一个DataTable中的数据导出到Excel的一个sheet中,不要任何样式(包括行高)那些东西,就直接把一个DataTable中的数据导出Excel中的一个Sheet中就可以了


在网上找了一大堆,感觉乱七八糟的,没有适合自己的,我就要以上要求就可以了



请给我完整源代码,包括资源释放,进程回收,我只要复制过来,不要任何修改就可以用了

只要问题解决,马上给分

...全文
176 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-11-26
  • 打赏
  • 举报
回复
/// <summary>
/// 将DataTable数据写入Excel文件(套用模板并分页)
/// </summary>
/// <param name="dt">DataSet集合,里面的表个数必须和sheetName数组相等</param>
/// <param name="rows">每个WorkSheet写入多少行数据</param>
/// <param name="top">行索引</param>
/// <param name="left">列索引</param>
/// <param name="isRrwriteColumn">是否重写列名</param>
/// <param name="sheetName">WorkSheet名字,必须和DataSet集合里面的DataTable个数对应</param>
public void DataTableToExcel(DataSet ds, int rows, int top, int left, bool isRrwriteColumn, params string[] sheetName)
{
int tableCount = ds.Tables.Count;
if (tableCount != sheetName.Length)
{
throw new Exception("DataTable个数和WorkSheet不匹配");
}
DateTime beforeTime;
DateTime afterTime;

//创建一个Application对象
beforeTime = DateTime.Now;
Excel.Application app = new Excel.ApplicationClass();
app.Visible = false;
afterTime = DateTime.Now;

//打开模板文件
Excel.Workbook workBook = app.Workbooks._Open(templetFile, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing);

Excel.Worksheet sheet = null;
for (int i = 1; i < tableCount; i++)
{
((Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing, workBook.Worksheets[i]);
}

#region 将源DataTable数据写入Excel
DataTable dt = null;
for (int i = 1; i <= tableCount; i++)
{
dt = ds.Tables[i - 1];
int iRows = dt.Rows.Count, iCols = dt.Columns.Count;
//获取要写入数据的WorkSheet对象,并重命名
sheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
sheet.Name = sheetName[i - 1];
if (isRrwriteColumn)
{
for (int k = 0; k < iCols; k++)
{
sheet.Cells[1, left + k] = dt.Columns[k].ColumnName;
}
}

object[,] dataArray = new object[iRows, iCols];
for (int j = 0; j < iRows; j++)
{
for (int k = 0; k < iCols; k++)
{
dataArray[j, k] = dt.Rows[j][k];
}
}
//将dt中的数据写入WorkSheet
sheet.get_Range(sheet.Cells[top, left], sheet.Cells[iRows, iCols]).Value2 = dataArray;
}
#endregion

#region 输出Excel文件并退出
try
{
workBook.SaveCopyAs(outputFile);
//workBook.SaveAs(outputFile, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive,
// missing, missing, missing, missing, missing);
workBook.Close(false, null, null);
app.Workbooks.Close();
app.Application.Quit();
app.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

sheet = null;
workBook = null;
app = null;

GC.Collect();
}
catch (Exception e)
{
//throw e;
}
finally
{
Process[] myProcesses;
DateTime startTime;
myProcesses = Process.GetProcessesByName("Excel");

//得不到Excel进程ID,暂时只能判断进程启动时间
foreach (Process myProcess in myProcesses)
{
startTime = myProcess.StartTime;

if (startTime > beforeTime && startTime < afterTime)
{
myProcess.Kill();
}
}
}
#endregion
}
yuji821 2010-11-25
  • 打赏
  • 举报
回复
vvvvvvvvvvvv
  • 打赏
  • 举报
回复
你给个邮箱, 我把那段发给你
yuji821 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huxinzheng690396467 的回复:]
你给个邮箱, 我把那段发给你
[/Quote]

yuji2008#126.com

发送时把#改成@,你一定要发符合我的要求的,不要发一大堆过来
yuji821 2010-11-24
  • 打赏
  • 举报
回复
只要符合要求,代码可用,立马给分
源码直接下载地址: https://pan.quark.cn/s/1c143f32ee83 华为作为全球领先的通信设备供应商,其产品系列广泛涉及各类网络设备,其中包括我们接下来要探讨的上网卡产品。华为上网卡驱动程序是一种专门为华为品牌旗下多种型号上网卡开发的软件模块,其主要功能在于保障这些设备与计算机操作系统的无缝对接。涉及的型号涵盖EC8189、EC226、EC169C、EC360、EC1260、EC1261、EC189、EC122、EC150以及EC168,这些均是由华为公司推出的移动宽带调制解调器,旨在通过移动网络实现便捷的互联网接入服务。驱动程序在计算机系统中的地位举足轻重,它充当了硬件设备与操作系统之间的媒介,负责对硬件设备发出的指令进行解读和执行,并将操作系统的指令传递给硬件设备。华为上网卡驱动程序的及时更新和精准安装是保障设备稳定运作和性能达到最优的关键因素。"天翼宽带安装程序V1.3.3.exe"是由中国电信提供的一个整合性软件包,内含华为上网卡的驱动程序及配套的管理工具。用户可借助此安装程序来执行华为上网卡的相关驱动安装及更新,同步享受中国电信的3G或4G网络服务。版本标识V1.3.3代表软件经过迭代优化,通常包含了对错误的修正、性能的改善以及新功能的引入。 "SetupInfo.xml"作为安装程序的配置文档,其中收录了安装流程中的各项设定和元数据信息,例如安装流程、文件定位、依赖条件等。它是安装程序在执行时参照和遵循的纲领,旨在确保安装流程按既定方案进行。文件名"CT_HW_EVDO_Driver"或许指向华为的EVDO(Evolution-Data Optimized)驱动程序,EVDO是一种3G无线通信规范,具备高速数据传输的特性。该驱动可...
内容概要:本文围绕【博士论文复现】基于小信号扫频辨识的光伏并网逆变器正负序交互稳定性分析展开,结合Matlab代码与Simulink仿真实现,系统研究了光伏并网逆变器在弱电网环境下的正负序阻抗建模与交互稳定性问题。重点采用小信号扫频法进行系统辨识,获取逆变器的正负序阻抗特性,并通过奈奎斯特稳定判据等方法分析其在不同电网强度下的稳定性表现。文中详细阐述了扫频激励信号的设计原理、频域响应数据的提取与处理流程、阻抗模型的拟合与验证方法等关键技术环节,实现了对逆变器在复杂电网条件下动态交互行为的精确刻画。该研究不仅深入揭示了新能源并网系统中潜在的宽频振荡机理,也为提升系统稳定性、优化控制器设计提供了坚实的理论依据和有效的技术手段。; 适合人群:具备电力电子、自动控制及电力系统基础知识,从事新能源并网、电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握基于小信号扫频法的电力电子装置阻抗建模方法;② 深入理解光伏并网逆变器在弱电网下的正负序交互稳定性机理;③ 学习并复现高水平博士论文中的核心仿真技术,提升科研实践能力;④ 为实际工程中新能源并网系统的稳定性分析、振荡问题诊断与控制器优化设计提供理论支持和技术参考。; 阅读建议:学习者应结合提供的Matlab代码与Simulink模型,深入理解扫频辨识的原理与实现步骤,重点关注锁相环、电流控制环等关键模块对系统阻抗特性的影响,并尝试改变系统参数以观察稳定性变化,从而加深对理论知识的掌握。

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧