这里是如何添加新工作簿、添加两个新工作表、向这些工作表中添加数据、保存工作簿和退出 Excel 的简单示例。
using MSExcel = Microsoft.Office.Interop.Excel;
public static void FillExcel(IEnumerable<MasterDataHeader> data)
{
MSExcel.Application excel = new MSExcel.Application { Visible = true };
MSExcel.Workbook workbook = excel.Workbooks.Add();
MSExcel.Worksheet sheet1 = workbook.Worksheets.Add();
MSExcel.Worksheet sheet2 = workbook.Worksheets.Add();
MasterDataHeader[] masterDataHeaders = data as MasterDataHeader[] ?? data.ToArray();
int row = 0;
foreach (var item in masterDataHeaders)
{
row++;
sheet1.Cells[row, 1] = item.Name;
sheet1.Cells[row, 2] = item.Department;
sheet1.Cells[row, 3] = item.SalesDetails;
sheet1.Cells[row, 4] = item.Adress;
}
row = 0;
foreach (var item in masterDataHeaders)
{
row++;
sheet2.Cells[row, 1] = item.GebaudeArt;
sheet2.Cells[row, 2] = item.Frequencyinfo;
}
workbook.Save();
excel.Quit();
}
如何在sheet1 中搜索员工编号并仅找到第一个匹配项
object missing = System.Type.Missing;
const int employeeNumber = 16845374;
MSExcel.Range employeeNumberFound = null;
employeeNumberFound = sheet1.UsedRange.Find(employeeNumber, missing,
MSExcel.XlFindLookIn.xlValues, MSExcel.XlLookAt.xlPart,
MSExcel.XlSearchOrder.xlByRows, MSExcel.XlSearchDirection.xlNext, false,
missing, missing);
if (employeeNumberFound != null)
{
Debug.WriteLine($"Employee number '{employeeNumber}' was found in cell '[{employeeNumberFound.Row},{employeeNumberFound.Column}]'");
}
else
{
Debug.WriteLine($"Employee number '{employeeNumber}' was not found");
}
有关更多信息,请查看例如here.
获取 table2 中的最后一行并在其下方插入新行。如果 table2 为空,最后一行仍为 32。当table2为空时,新行不会增加。
var lastRowAsRange = sheet1.Cells[32, 2].CurrentRegion.Columns[1].Cells.Find("*", missing, missing, missing,
XlSearchOrder.xlByRows, XlSearchDirection.xlPrevious, false, missing, missing);
var lastRow = lastRowAsRange != null
? lastRowAsRange.Row
: 32;
var newRow = lastRowAsRange != null
? lastRow + 1
: lastRow;
bool inserted = sheet1.Rows[newRow].Insert(XlDirection.xlDown, XlInsertFormatOrigin.xlFormatFromLeftOrAbove);
if (inserted)
{
sheet1.Cells[newRow, 1] = "IT";
sheet1.Cells[newRow, 2] = "100";
sheet1.Cells[newRow, 3] = "hyd";
}