如何合并多个Excel文件至一个Excel?

commandolee 2009-03-05 02:12:30
现在有若干Excel文件,需要将这些Excel在服务器端合并,合并的原则可能是这样的:

File1.xls的Sheet1(内容为若干数据),File2.xls的Sheet1(内容仅为一张图片) 合并为File3.xls,且File3的sheet1为File1.xls的Sheet1中的数据,sheet2为File2.xls的shhet1中的图片

论坛里面搜到了一些帖子,但都没有对解决我的问题有多大帮助,在此求助。问题比较特殊,多给些分吧,希望有人指引!谢谢!
...全文
2217 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wonderful_abc 2012-02-23
  • 打赏
  • 举报
回复
我也想知道答案,雁过留痕....
commandolee 2009-03-06
  • 打赏
  • 举报
回复
目前还有一个问题,就是尽管Sheet上的各个对象都可以被复制到新的文件中,但是样式却变了。比如某些grid的背景色没有了,某些字体颜色变了。不知还有人对此有所研究,知道如何在复制时保持样式也不会变化。

谢谢!
commandolee 2009-03-06
  • 打赏
  • 举报
回复
谢谢keebing2,你的方法应该只对数据有效,而图片和图标等对象不是Cell Level的,而是Spread sheet level的。

我在MSDN上面找到了一些资源,可以通过Interop对象操作Excel等一系列Office对象。下面是我现在的代码,可以实现Spread Sheet的复制:

using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Reflection;
using Microsoft.Office.Interop.Excel;


public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Application xlApp = new Application();
if (xlApp == null) throw new Exception("Unable to operate on Excel files. MS Office maybe not installed on server");
xlApp.Visible = false; //Process excel files in background

Workbook wbSource = xlApp.Workbooks.Open(
@"d:\Report0000.xls",
true,
2,
Type.Missing,
Type.Missing,
Type.Missing,
true,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
false,
Type.Missing,
Type.Missing
);

Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

wbSource.Worksheets.Copy(Missing.Value, wb.Worksheets[wb.Worksheets.Count]);

wb.SaveAs(
@"d:\" + Guid.NewGuid().ToString(),
XlFileFormat.xlExcel8,
Type.Missing,
Type.Missing,
false,
false,
XlSaveAsAccessMode.xlExclusive,
XlSaveConflictResolution.xlLocalSessionChanges,
false,
Type.Missing,
Type.Missing,
Type.Missing);

wbSource.Close(true, Missing.Value, Missing.Value);
wb.Close(true, Missing.Value, Missing.Value);
xlApp.Quit();

//Response.Redirect(@"~/Console/");
}
}
keebing2 2009-03-05
  • 打赏
  • 举报
回复
Excel._Application _app;
Excel.Workbook _work;
Excel.Worksheet _sheet;

_app = new Excel.ApplicationClass();
_work = _app.Workbooks.Add(true);
_sheet = (Excel.Worksheet)_work.ActiveSheet;

_sheet.Cells.Select();
commandolee 2009-03-05
  • 打赏
  • 举报
回复
楼上说的是用程序"全选"?可否有示例代码?谢谢!

如果是手动"全选",那就不是我需要的答案。我需要在服务器端用asp.net来完成
keebing2 2009-03-05
  • 打赏
  • 举报
回复
可以把sheet页中的数据全选,然后复制过去。
不知道可行不,你可以试一下。

62,268

社区成员

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

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

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

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