用C#将数据写入到Excel文件的方法

数据来源为一个XML文件,文件的位置为:C:/DataSource.xml。无需考虑架构,读到DataSet中时,该XML文件类似一个二维数组。
845 321 653
324 983 678
234 874 328
Excel模板文件的位置为:C:/模板.xls,该模板包含三个工作表,分别为:年度统计表,季度统计表,每月统计表。

要求的功能:
将模板文件复制到c:/统计表.xls之后,将XML中的数据写入该Excel文件的“季度统计表”工作表中,写入的起始位置为E3单元格(即将845 写入E3,以此类推),写入后将文件保存。

特别说明:
1、由于实际应用的量比较大,所以恳请高手们尽量要考虑到执行效率问题。
2、我参照“孟子E章”的方法可以将数据写入到Excel文件,但如何写入工作簿中指定的工作表? 新创建的文件不需用户用对话框指定?写入的速度等问题无法解决.
3、Excel.Application.Workbooks中除了Open方法外,还有OpenXML方法,如何使用?是否可增加效率?

谢谢,解决后立即结帖
---------------------------------------------------------------
//按楼主的要求将一些文件参数固化,实际应用时应用变量替代。
//下面是实现方法

private void button1_Click(object sender, System.EventArgs e)
{
string filename=@"c:/统计表.xls";
FileInfo mode=new FileInfo("c://模板.xls");
try
{
mode.CopyTo(filename,true);
}
catch(Exception ee)
{
MessageBox.Show(ee.Message);
return;
}
Excel.Application objApp = new Excel.Application ( ) ;
Excel.Workbooks workbooks = objApp.Workbooks;
object missing=Missing.Value;
workbooks.Open(filename,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
Excel.Sheets objSheets = objApp.Worksheets;
Excel._Worksheet objSheet;
//采用索引的方式规定写入Index张的工作表
objSheet = (Excel._Worksheet)objSheets.get_Item(2);
//既然楼主可以写数据,此处略过,
//通过DataSet导出为xml,通过xsl解析后改为xls,速度还可以.
//关于高效率的处理最好不要用逐行写入的方式,定义块然后写入,具体参见下面的说明
objSheet.Cells[3,5] = "循环写入数据";
//去掉保存的对话框,若肯定无重复的文件或需要提示,将下面两行注释即可
objApp.DisplayAlerts = false;
objSheet.SaveAs(filename,missing,missing,missing,missing,missing,missing,missing,missing,missing);
objApp.Workbooks.Close();
//退出依然会驻留进程,因此进行垃圾回收
objApp.Quit();
System.GC.Collect();
}
========================================================================
写入数据到指定的位置可参考如下:
xlssheet.Range("A" & i , "H" & i).Select()
xlsapp.Selection.EntireRow.Insert()
=========================================================================
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值