У меня возникла проблема, связанная с написанием Excel. Ниже приводится проблема - у меня есть требование, для которого у меня есть несколько листов Excel, и для каждого файла Excel может быть несколько листов. Итак, мне нужно написать в одном Excel снесколько отдельных листов, скажем, у меня есть 3 файла Excel File1.xlsx с Sheet1, File2.xlsx с Sheet2 и File 3 с несколькими Sheet3 и Sheet4. На каждом листе данные похожи на 3 столбца (Name, EmployeeID, MobNo)Таким образом, результатом будет отдельный файл Result.xlsx с несколькими листами Sheet1, Sheet2, Sheet3 & Sheet4.
Пожалуйста, поделитесь кодом без каких-либо сторонних инструментов, таких как Spire.xl. Мне нужно делать это программно. Нижеэто код -
string inputPathFirstExcel =
@"C:\MyData\ExcelWritingApp\File1.xlsx";
string inputPathSecondExcel = @"C:\\ExcelWritingApp\File2.xlsx";
string[] ColumnData = { };
Excel.Application xlApp = null;
Excel.Workbook xlWorkBook = null;
Excel.Worksheet xlWorkSheet = null;
Excel.Range xlrange = null;
xlApp = new Excel.Application();
xlApp.Visible = false;
xlWorkBook = xlApp.Workbooks.Open(inputPathFirstExcel);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];
xlrange = xlWorkSheet.UsedRange;
object missing = Type.Missing;
Excel.Application oXL = new Excel.Application();
oXL.Visible = false;
Excel.Workbook oWB = oXL.Workbooks.Add(missing);
Excel.Worksheet oSheet = oWB.ActiveSheet as Excel.Worksheet;
oSheet.Name = "Sheet1";
Microsoft.Office.Interop.Excel.Range xlRange = xlWorkSheet.UsedRange;
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Employee");
dt.Columns.Add("MobNo");
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
for (int i = 1; i <= colCount; i++)
{
oSheet.Cells[1, i] = dt.Columns[i - 1].ToString().ToUpper() + "\t";
}
for (int i = 0; i < rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
oSheet.Cells[i + 2, j] = Convert.ToString((xlRange.Cells[i + 2, j] as Excel.Range).Value2);
}
}
string fileName = @"C:\Result.xlsx";
oWB.SaveAs(fileName, Excel.XlFileFormat.xlOpenXMLWorkbook,
missing, missing, missing, missing,
Excel.XlSaveAsAccessMode.xlNoChange,
missing, missing, missing, missing, missing);