C# 如何从excel复制特定的工作表名称并将其保存到新位置?使用C
我正在使用C Windows窗体 目标: 如果我有多张excel表格 例如,表1、表2、表3、测试表1、测试表2 如何获取特定的工作表名称,例如[Sheet2],并将其保存为新的excel工作簿 这就是我到目前为止所做的: 按钮点击: 更新: 这就是我要去的地方C# 如何从excel复制特定的工作表名称并将其保存到新位置?使用C,c#,excel,C#,Excel,我正在使用C Windows窗体 目标: 如果我有多张excel表格 例如,表1、表2、表3、测试表1、测试表2 如何获取特定的工作表名称,例如[Sheet2],并将其保存为新的excel工作簿 这就是我到目前为止所做的: 按钮点击: 更新: 这就是我要去的地方 private void button1_Click(object sender, EventArgs e) { Excel.Application excelApp; string fileTarget = "C:\
private void button1_Click(object sender, EventArgs e)
{
Excel.Application excelApp;
string fileTarget = "C:\\Users\\LV98\\Desktop\\Test C#\\template.xlsx";
string fileTemplate = "C:\\Users\\LV98\\Desktop\\Test C#\\excel_file.xlsx";
excelApp = new Excel.Application();
Excel.Workbook wbTarget;
Excel.Worksheet sh;
//Create target workbook
wbTarget = excelApp.Workbooks.Open(fileTemplate);
//Fill target workbook
//Open the template sheet
sh = wbTarget.Worksheets["Sheet2"];
sh.Copy(wbTarget.Worksheets[1]);
//Save file
wbTarget.SaveAs(fileTarget);
wbTarget.Close(true);
excelApp.Quit();
}
当我打开新的excel文件时,它会打开Sheet2,这正是我想要的!但唯一的问题是,还保存了其他工作表。。我将考虑重新命名新工作表,并删除其余部分。经过一番研究,我发现了一些有用的链接。 我在下面粘贴了一段代码片段,我认为这会对您有所帮助:
IWorkbook sourceWorkbook = application.Workbooks.Open("Source.xlsx");
IWorkbook destinationWorkbook = application.Workbooks.Open("Destination.xlsx");
//Copy Excel worksheet from source workbook to the destination workbook
destinationWorkbook.Worksheets.AddCopy(sourceWorkbook.Worksheets[0]);
//Save the file
destinationWorkbook.Save();
我在以下链接中找到了上述代码:
此外,我相信阅读以下答案会对您有所帮助:只要在您的代码中尝试一下,它就会起作用
foreach (Excel.Worksheet sheet in wbTarget.Worksheets)
{
//Save Particular sheet as file
if (sheet.Name == "Sheet2")
{
var newbook = excelApp.Workbooks.Add(1);
sheet.Copy(newbook.Sheets[1]);
newbook.SaveAs(@"C:\Users\LV98\Desktop\Test C#\" + sheet.Name);
newbook.Close();
}
}
完成按钮单击事件的代码。我测试了下面的代码,它运行良好
protected void button1_Click(object sender, EventArgs e)
{
Excel.Application excelApp;
string fileTemplate = "C:\\Users\\LV98\\Desktop\\Test C#\\template.xlsx";
excelApp = new Excel.Application();
Excel.Workbook wbTarget;
//Create target workbook
wbTarget = excelApp.Workbooks.Open(fileTemplate);
foreach (Excel.Worksheet sheet in wbTarget.Worksheets)
{
//Save Particular sheet as file
if (sheet.Name == "Sheet2")
{
var newbook = excelApp.Workbooks.Add(1);
sheet.Copy(newbook.Sheets[1]);
newbook.SaveAs(@"C:\Users\LV98\Desktop\Test C#\" + sheet.Name);
newbook.Close();
}
}
wbTarget.Close(true);
excelApp.AskToUpdateLinks = false;
excelApp.Quit();
GetExcelProcess(excelApp);
}
[DllImport("user32.dll")]
static extern int GetWindowThreadProcessId(int hWnd, out int lpdwProcessId);
Process GetExcelProcess(Excel.Application excelApp)
{
int id;
GetWindowThreadProcessId(excelApp.Hwnd, out id);
return Process.GetProcessById(id);
}
您想保存所有工作表还是只保存特定工作表?@UdhayTitus specialworksheet@LV98对不起,我不明白,你能准确地解释一下问题吗?这行代码字符串fileTemplate=C:\\Users\\LV98\\Desktop\\Test C\\template.xlsx;-是获取图纸名称并将其保存到新位置newbook的源文件。SaveAs@C:\Users\LV98\Desktop\Test C\+sheet.Name;-关闭应用程序后,原始文件template.xlsx将被锁定以进行编辑。转到任务管理器并选择“流程”选项卡,在“流程”选项卡中检查是否有任何流程以EXCEL.exe的名称运行。这是我当前所做的-但需要防止代码中出现这种情况。我会做一些调查你试过这个吗
protected void button1_Click(object sender, EventArgs e)
{
Excel.Application excelApp;
string fileTemplate = "C:\\Users\\LV98\\Desktop\\Test C#\\template.xlsx";
excelApp = new Excel.Application();
Excel.Workbook wbTarget;
//Create target workbook
wbTarget = excelApp.Workbooks.Open(fileTemplate);
foreach (Excel.Worksheet sheet in wbTarget.Worksheets)
{
//Save Particular sheet as file
if (sheet.Name == "Sheet2")
{
var newbook = excelApp.Workbooks.Add(1);
sheet.Copy(newbook.Sheets[1]);
newbook.SaveAs(@"C:\Users\LV98\Desktop\Test C#\" + sheet.Name);
newbook.Close();
}
}
wbTarget.Close(true);
excelApp.AskToUpdateLinks = false;
excelApp.Quit();
GetExcelProcess(excelApp);
}
[DllImport("user32.dll")]
static extern int GetWindowThreadProcessId(int hWnd, out int lpdwProcessId);
Process GetExcelProcess(Excel.Application excelApp)
{
int id;
GetWindowThreadProcessId(excelApp.Hwnd, out id);
return Process.GetProcessById(id);
}