有網友留言詢問如何在Excel將資料寫入多個工作表,
我們可以使用foreach的方式取得每個工作表,
或是利用Worksheets[index]的方式指定要存取那一張工作表。
Workbook在新增,預設會有三張工作表。
如果要新增工作表,使用Worksheets.Add方法新增。
底下是範例程式。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelMultiSheet
{
class Program
{
static void Main(string[] args)
{
GenerateExcel(5);
}
///<summary>
/// 產生多個工作表的Excel
/// 工作表的數量一定要大於三,目前沒檢查
/// </summary>
/// 工作表數量
static void GenerateExcel(int numberOfSheet)
{
string fileName = @"D:\MultiSheet.XLSX";
Excel.Application oXL = new Excel.Application();
Excel.Workbook oWB;
Excel.Worksheet oSheet;
oXL.Visible = false;
oXL.UserControl = false;
oWB = oXL.Workbooks.Add(Missing.Value);
//目前工作表的數量
int currentNumOfSheet = oWB.Worksheets.Count;
//補足工作表
for (; currentNumOfSheet < numberOfSheet; currentNumOfSheet++)
oWB.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//對於每個工作表寫入一行測試資料
foreach (Excel.Worksheet wSheet in oWB.Worksheets)
wSheet.Cells[1, 1] = wSheet.Name + " This is a test line before changing the sheet name. ";
//使用Worksheets[index]的方式寫入第二行資料
for (int counter = 1; counter <= currentNumOfSheet; counter++)
{
oSheet = oWB.Worksheets[counter];
oSheet.Name = "Sheet " + counter;
oSheet.Cells[2, 1] = "A test line after changing the sheet name. ";
}
//存檔
oWB.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
oWB.Close();
oWB = null;
oXL.Quit();
oXL = null;
}
}
}
以上,提供參考。