请教大家:EXCEL复制SHEET的问题

Lixin19821010 2008-04-16 02:54:17
我的EXCEL里面有一个已经存在的SHEET,如何复制这个SHEET呢,然后修改一下WORKSHEET.NAME属性,并进行保存.保存到本EXCEL文件里.
...全文
692 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
:)
  • 打赏
  • 举报
回复
:)
Lixin19821010 2008-04-17
  • 打赏
  • 举报
回复
而且给我加的SHEET还乱放位置,想叫他在最后加,结果随便一个位置给我放上.
但是使用起来一切正常.就是源文件打不开了

Lixin19821010 2008-04-17
  • 打赏
  • 举报
回复
如果我把红色的那一行换成: templateSheet = (Excel.Worksheet)workbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
当然前面templateSheet有申明赋值.
是可以加的.没问题.但是就是源文件就打不开了.打开就抱错了......
Lixin19821010 2008-04-17
  • 打赏
  • 举报
回复
Excel.Application app = new Excel.Application();
Excel.Worksheet ws;
Excel.Range rng;
Excel.Workbook wb = app.Workbooks.Open(@"D:\CData.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

Excel.Worksheet worksheet = (Excel.Worksheet)wb.Worksheets[1];
ws = (Excel.Worksheet)wb.Sheets[1];
int formCount=wb.Worksheets.Count;
for (int i = 0; i < collection.Count; i++)
{
ws.Copy(Missing.Value, ws);
}
wb.Save();
int endCount=wb.Worksheets.Count;
for (int i = formCount + 1, j = 0; i < endCount + 1; i++, j++)
{
worksheet = (Excel.Worksheet)wb.Worksheets[i];
worksheet.Name = collection[j].ToString();
rng = worksheet.get_Range("B2", Missing.Value);
rng.Value = collection[j].ToString() + "装置列解报表";
rng.Font.Name = "宋体";
rng.Font.Bold = true;
rng.Font.Size = 22;
}
wb.Save();
//wb.Close(true, Missing.Value, Missing.Value);
app.Quit();

MessageBox.Show("成功");


这个在我的机器,单独建立一个工程是没有问题的.
但是为什么在我的项目里面用,总是在红色那一行抱错: Exception from HRESULT: 0x800A03EC
这是为什么呢?
Lixin19821010 2008-04-16
  • 打赏
  • 举报
回复
Excel.Application app = new Excel.Application();
Excel.Worksheet ws;
Excel.Range rng;
Excel.Workbook wb = app.Workbooks.Open(@"D:\CData.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

//Excel.Worksheet worksheet = (Excel.Worksheet)wb.Worksheets[1];
//ws = (Excel.Worksheet)wb.Worksheets.Add(worksheet, Missing.Value, Missing.Value, Missing.Value);
Excel.Worksheet demosheet = (Excel.Worksheet)wb.Sheets[1];
for (int i = 0; i < collection.Count; i++)
{
wb.Worksheets.Copy(Type.Missing, demosheet);
//ws = (Excel.Worksheet)wb.Worksheets.Add(Type.Missing, demosheet, Type.Missing, Type.Missing);


}
wb.Save();
app.Quit();

大概是这种形式的,但是这个是垃圾,并且离成功还早,

我添加了WORKSHEET,如何得到我添加的这个WORKSHEET呢?

感谢关注
whoami333 2008-04-16
  • 打赏
  • 举报
回复
不考虑格式的话用oledb方式。select * into [sheet2$] from [sheet1$]...
忘记into的位置了,好像是在from的前面。
Lixin19821010 2008-04-16
  • 打赏
  • 举报
回复
谢谢大家

110,534

社区成员

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

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

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