我目前正在 C# 中开发一个 Excel 插件,其中包含多种方法(表值函数),可供 Excel 用户和程序员 (VBA) 使用。
如何编写一个方法,将新的 ListObject(Excel 表)添加到给定的 Excel 工作表,并将给定的 DataTable 绑定为数据源?像下面这样:
using Excel = Microsoft.Office.Interop.Excel;
...
[ClassInterface(ClassInterfaceType.AutoDual)]
public class TableFunctions {
...
public Excel.ListObject CreateListObject(Excel.Worksheet ws, string TableName, DataTable dt, string CellStr = "A1")
{
...
}
这种将 Worksheet 对象作为参数发送的方法显然不起作用。或者可以吗?
经过一番研究,我找到了问题的答案,即如何在 C# 中以编程方式将 ListObject(excel 表)添加到工作表中:
public Excel.ListObject WriteToExcelTable(Excel.Worksheet WSheet, string TableName, string CellStr = "A1", bool ClearSheetContent = false)
{
Excel.Range range;
if (ClearSheetContent)
WSheet.Cells.ClearContents(); // clear sheet content
// get upper left corner of range defined by CellStr
range = (Excel.Range)WSheet.get_Range(CellStr).Cells[1, 1]; //
// Write table to range
HelperFunc.WriteTableToExcelSheet(WSheet, this._tbl, range.Address);
// derive range for table, +1 row for table header
range = range.get_Resize(this.RowCount + 1, this.ColumnCount);
// add ListObject to sheet
// ListObjects.AddEx Method
// http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.listobjects.addex%28v=office.14%29.aspx
Excel.ListObject tbl = (Excel.ListObject)WSheet.ListObjects.AddEx(
SourceType: Excel.XlListObjectSourceType.xlSrcRange,
Source: range,
XlListObjectHasHeaders: Excel.XlYesNoGuess.xlYes);
// set name of excel table
tbl.Name = TableName;
// return excel table (ListObject)
return (Excel.ListObject)tbl;
}
See 关于此代码以及 Excel 和 .net 集成的其他相关代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)