如何将多个excel合并为一个excel多个sheet

wsdxb_023_dwd 2009-09-23 11:12:40
如题,使用C#,
...全文
2724 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
纸纸纸纸飞飞 2009-09-24
  • 打赏
  • 举报
回复
关注中,现在还没此需求。。
wsdxb_023_dwd 2009-09-24
  • 打赏
  • 举报
回复
可以的方法多了,需要好点的,效率高点的,我导出的excel需要50W行呢
qshurufa 2009-09-23
  • 打赏
  • 举报
回复
关注!!
BitCoffee 2009-09-23
  • 打赏
  • 举报
回复

//参考,一下是将aaa.xls里面的sheet添加到bbb.xls里面去
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
xlApp.Visible = true;
Microsoft.Office.Interop.Excel.Workbook xlBook;
object m_objOpt = System.Reflection.Missing.Value;
xlBook = xlApp.Workbooks.Open(@"c:\aaa.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
Microsoft.Office.Interop.Excel.Worksheet xlSheet;

Microsoft.Office.Interop.Excel.Workbook xlBook2;
xlBook2 = xlApp.Workbooks.Open(@"c:\bbb.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

for (int i = 1; i <= xlBook.Worksheets.Count; i++)
{
xlSheet = xlBook.Worksheets[i] as Microsoft.Office.Interop.Excel.Worksheet;
xlSheet.Copy(m_objOpt, xlBook2.Worksheets[3]);
}
huming_h 2009-09-23
  • 打赏
  • 举报
回复
以前用excel的com控件输出过excel,里面是有sheet对象的。当记录达到一个sheet的长度后新建一个sheet
book.Worksheets.Add()//好像是这个方法
wsdxb_023_dwd 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhouyanfss 的回复:]
引用 1 楼 huming_h 的回复:
我知道的方法就是,把多个excel先读出来到datatable,然后写出去。

好像只能这样
[/Quote]

我的excel数据就是从datatable里面导进去的,主要是数据有几十万行,excel只支持60000行,所以分了好几个,现在我想在导出之后把他们合并为不同的sheet
zxkid 2009-09-23
  • 打赏
  • 举报
回复
其实可以打开多个Excel,将Sheet直接复制到其中一个Excel中
可以通过Excel的录制宏功能来得到VBA源代码,再转换成C#对应的代码
asdfg_ 2009-09-23
  • 打赏
  • 举报
回复
思路楼上已经给出 关键在怎么分多个sheet
wujinjian2008n 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huming_h 的回复:]
我知道的方法就是,把多个excel先读出来到datatable,然后写出去。
[/Quote]
就这样
zhouyanfss 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huming_h 的回复:]
我知道的方法就是,把多个excel先读出来到datatable,然后写出去。
[/Quote]
好像只能这样
huming_h 2009-09-23
  • 打赏
  • 举报
回复
我知道的方法就是,把多个excel先读出来到datatable,然后写出去。
wuyq11 2009-09-23
  • 打赏
  • 举报
回复
Excel.Application app = new Excel.ApplicationClass();
app.Visible = true;
Excel.Workbook workBook = app.Workbooks.Open(templetFile,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
for(int i=1;i<sheetCount;i++)
{
((Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing,workBook.Worksheets[i]);
}
循环获取sheet添加workBook.Worksheets里
再遍历生成excel

BitCoffee 2009-09-23
  • 打赏
  • 举报
回复
上面的不可以?
wsdxb_023_dwd 2009-09-23
  • 打赏
  • 举报
回复
顶起来

110,825

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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