读书人

c# excel 复制一个sheet到一个新建的e

发布时间: 2013-07-16 22:38:05 作者: rapoo

c# excel 复制一个sheet到一个新建的excel中!运行时代码出错求大神帮忙修改!
private bool CobyEXCEL(string sourcePath)
{
bool result = false;
Excel.XlFixedFormatType targetType = Excel.XlFixedFormatType.xlTypePDF;
object missing = Type.Missing;
Excel.ApplicationClass application = null;
Excel.Workbook workBook = null;
try
{
application = new Excel.ApplicationClass();
object type = targetType;
workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing, missing, missing);
//Excel.Worksheet worksheet = (Excel.Worksheet)workBook.Sheets["sheet1"];
Excel.Sheets shs = workBook.Sheets;

Excel.Worksheet worksheet = (Excel.Worksheet)shs.get_Item(1);

//定义一个COM中空类型的对象
object missing1=System.Reflection.Missing.Value;
Excel.Application app = new Excel.ApplicationClass();
app.Application.Workbooks.Add(true);
Excel.Workbook book =(Excel.Workbook)app.ActiveWorkbook;
//worksheet = (Excel.Worksheet)book.Worksheets.Add();


// Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets[1];
Excel.Worksheet sheet = (Excel.Worksheet)book.ActiveSheet;
//worksheet.Copy(sheet, Type.Missing);//用这个报0x800A03EC

//worksheet = worksheet.get_Item(1);
Excel.Range range = worksheet.get_Range(worksheet.Cells[1,1], worksheet.Cells[worksheet.Rows.Count, worksheet.Columns.Count]);
worksheet.Cells.Select();
worksheet.Cells.Copy(Type.Missing);


Excel.Range test = ((Excel.Range)sheet.Cells[1, 1]);
test.Select();

app.DisplayAlerts = false;
test.Parse(Missing.Value, Missing.Value); //这边复制出来没有内容


//保存excel文件
book.SaveCopyAs("D:\\test.xls");
//关闭文件
book.Close(false, missing1, missing1);
//退出excel
app.Quit();

}
catch
{
result = false;
}
finally
{
if (workBook != null)


{
workBook.Close(true, missing, missing);
workBook = null;
}
if (application != null)
{
application.Quit();
application = null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
return result;
}
[解决办法]
worksheet.Copy(sheet, Type.Missing);//用这个报0x800A03EC
参数反了吧
[解决办法]
权限问题的,在控制面板----Administrative Tools----Component Services---Dcom config里面开放权限试下

读书人网 >C#

热点推荐