[英]Excel automation using C#
我有一個包含近 400 個 excel 文件的文件夾。 我需要將所有這些 excel 文件中的工作表復制到一個 excel 文件中。
到目前為止,我已經完成了使用互操作和反射命名空間的工作。
我使用 folderBrowserDialog 瀏覽到文件夾並選擇它,這使我能夠獲取文件夾中文件的文件名並遍歷它們,這是我得到的任何幫助,將不勝感激。
if (result == DialogResult.OK)
{
string path = fbd1.SelectedPath; //get the path
int pathLength = path.Length + 1;
string[] files = Directory.GetFiles(fbd1.SelectedPath);// getting the names of files in that folder
foreach (string i in files)
{
MessageBox.Show("1 " + i);
myExcel.Application excelApp = new myExcel.ApplicationClass();
excelApp.Visible = false;
MessageBox.Show("2 " + i);
myExcel.Workbook excelWorkbook = excelApp.Workbooks.Add(excelApp.Workbooks._Open(i, 0, false, 5, "", "", false, myExcel.XlPlatform.xlWindows, "", true, false, 0, true));
myExcel.Sheets excelSheets = excelWorkbook.Worksheets;
MessageBox.Show("3 " + i);
excelApp.Workbooks.Close();
excelApp.Quit();
}
MessageBox.Show("Done!");
}
如何將復制的工作表附加到目標文件。 希望問題很清楚?
謝謝。
使用 Worksheet.Copy(Before, After) 並將 after 指定為您想要的任何主文件的最后一個工作表。 請注意,您可能需要在 mainApp 中創建一個新工作表,以便在之后輸入工作表,以免引發異常。
請嘗試以下操作:
Excel.Application mainApp = new Excel.ApplicationClass();
mainApp.Visible = false;
Excel.Workbook mainWorkbook = excelApp.Workbooks.Add(null);
Excel.Sheets mainWorkSheets = mainWorkbook.Worksheets;
foreach (string i in files)
{
MessageBox.Show("1 " + i);
Excel.Application exApp = new Excel.ApplicationClass();
exApp.Visible = false;
MessageBox.Show("2 " + i);
Excel.Workbook exWorkbook = exApp.Workbooks.Open(i,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
MessageBox.Show("3 " + i);
foreach(Excel.Worksheet sheet in exWorkbook.Worksheets)
{
sheet.Copy(Type.Missing, mainWorkSheets[mainWorkSheets.Count -1]);
}
}
mainApp.Save("NewExcel");
怎么樣: Merge(@"C:\\ExcelFolder", @"C:\\FinalDestination.xls");
對我有用,直接脫離工作樣本 - 為你修剪。
希望您不需要任何調整,但如果需要,請執行 (0:
請看以下代碼:
private void Merge(string strSourceFolder, string strDestinationFile)
{
try
{
//1. Validate folder,
//2. Instantiate excel object
//3. Loop through the files
//4. Add sheets
//5. Save and enjoy!
object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
ExcelApp.Visible = false;
//Create destination object
Microsoft.Office.Interop.Excel.Workbook objBookDest = ExcelApp.Workbooks.Add(missing);
foreach (string filename in Directory.GetFiles(strSourceFolder))
{
if (File.Exists(filename))
{
//create an object
Microsoft.Office.Interop.Excel.Workbook objBookSource = ExcelApp.Workbooks._Open
(filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//Browse through all files.
foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in objBookSource.Worksheets)
{
sheet.Copy(Type.Missing, objBookDest.Worksheets[objBookSource.Worksheets.Count]);
}
objBookSource.Close(Type.Missing, Type.Missing, Type.Missing);
objBookSource = null;
}
}
objBookDest.SaveAs(strDestinationFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
objBookDest.Close(Type.Missing, Type.Missing, Type.Missing);
objBookDest = null;
ExcelApp = null;
}
catch (System.Exception e)
{
//Catch
}
}
您可以使用 C# 嘗試使用 ZetExcel 進行 Excel 自動化。 ZetExcel for .NET 包含用於 .NET Framework、.NET Core 和 Xamarin 平台的 API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.