给我的 excel sheet in excel 一个 tableStyle
Give a tableStyle to my excel sheet in excel
我正在使用 excel dna 在 excel 文件中显示存储过程的结果,我想为我的 header 提供 table 样式excel sheet 但我没有找到方法,我发现的例子与我的情况不同,这是我的代码,它可能会解释更多:
public static object loadViewData(string date)
{
DateTime dt = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
object[,] resultFromDB = getViewDataFromDB(dt);
object res= ArrayResizer.displayResultInExcelFile(resultFromDB);
return res;
}
getViewDataFromDB returns 来自 sql 服务器的数据,displayResultInExcelFile 将数据显示到 excel 文件中,这是它的代码:
public static object displayResultInExcelFile(object[,]array)
{
var caller = Excel(xlfCaller) as ExcelReference;
if (caller == null)
return array;
int rows = array.GetLength(0);
int columns = array.GetLength(1);
if (rows == 0 || columns == 0)
return array;
var rowLast = caller.RowFirst + rows - 1;
var columnLast = caller.ColumnFirst + columns - 1;
if (rowLast > ExcelDnaUtil.ExcelLimits.MaxRows - 1 ||
columnLast > ExcelDnaUtil.ExcelLimits.MaxColumns - 1)
{
return ExcelError.ExcelErrorValue;
}
ExcelAsyncUtil.QueueAsMacro(
delegate
{
var newTarget = new ExcelReference(caller.RowFirst + 1, rowLast + 1, caller.ColumnFirst, columnLast, caller.SheetId);
newTarget.SetValue(array);
} );
return array;
}
我可以在 excel 文件中添加 table 样式吗?我想要
TableStyle = "TableStyleMedium9";
谢谢
我终于找到了如何将 table 样式添加到我的 excel sheet,
public static object displayResultInExcelFile(object[,]array)
{
var caller = Excel(xlfCaller) as ExcelReference;
if (caller == null)
return array;
int rows = array.GetLength(0);
int columns = array.GetLength(1);
if (rows == 0 || columns == 0)
return array;
var rowLast = caller.RowFirst + rows - 1;
var columnLast = caller.ColumnFirst + columns - 1;
if (rowLast > ExcelDnaUtil.ExcelLimits.MaxRows - 1 ||
columnLast > ExcelDnaUtil.ExcelLimits.MaxColumns - 1)
{
return ExcelError.ExcelErrorValue;
}
ExcelAsyncUtil.QueueAsMacro(
delegate
{
var newTarget = new ExcelReference(caller.RowFirst + 1, rowLast + 1, caller.ColumnFirst, columnLast, caller.SheetId);
Microsoft.Office.Interop.Excel.Application oxl = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");
oxl.Visible = true;
Workbook wrkbk = oxl.ActiveWorkbook;
string wbkname =wrkbk.Name;
Worksheet wrksht = wrkbk.ActiveSheet ;
string wrksheetname = oxl.ActiveSheet.Name;
object cell1 = wrksht.Cells[newTarget.RowFirst+1, newTarget.ColumnFirst];
object cell2 = wrksht.Cells[newTarget.RowFirst+1
, newTarget.ColumnLast];
Range headerRange = wrksht.get_Range(cell1, cell2);
wrksht.ListObjects.AddEx(XlListObjectSourceType.xlSrcRange, headerRange, Type.Missing,XlYesNoGuess.xlYes,Type.Missing).Name= "MyTableStyle";
wrksht.ListObjects.get_Item("MyTableStyle").TableStyle = "TableStyleMedium9";
newTarget.SetValue(array);
} );
return array;
}
我正在使用 excel dna 在 excel 文件中显示存储过程的结果,我想为我的 header 提供 table 样式excel sheet 但我没有找到方法,我发现的例子与我的情况不同,这是我的代码,它可能会解释更多:
public static object loadViewData(string date)
{
DateTime dt = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
object[,] resultFromDB = getViewDataFromDB(dt);
object res= ArrayResizer.displayResultInExcelFile(resultFromDB);
return res;
}
getViewDataFromDB returns 来自 sql 服务器的数据,displayResultInExcelFile 将数据显示到 excel 文件中,这是它的代码:
public static object displayResultInExcelFile(object[,]array)
{
var caller = Excel(xlfCaller) as ExcelReference;
if (caller == null)
return array;
int rows = array.GetLength(0);
int columns = array.GetLength(1);
if (rows == 0 || columns == 0)
return array;
var rowLast = caller.RowFirst + rows - 1;
var columnLast = caller.ColumnFirst + columns - 1;
if (rowLast > ExcelDnaUtil.ExcelLimits.MaxRows - 1 ||
columnLast > ExcelDnaUtil.ExcelLimits.MaxColumns - 1)
{
return ExcelError.ExcelErrorValue;
}
ExcelAsyncUtil.QueueAsMacro(
delegate
{
var newTarget = new ExcelReference(caller.RowFirst + 1, rowLast + 1, caller.ColumnFirst, columnLast, caller.SheetId);
newTarget.SetValue(array);
} );
return array;
}
我可以在 excel 文件中添加 table 样式吗?我想要
TableStyle = "TableStyleMedium9";
谢谢
我终于找到了如何将 table 样式添加到我的 excel sheet,
public static object displayResultInExcelFile(object[,]array)
{
var caller = Excel(xlfCaller) as ExcelReference;
if (caller == null)
return array;
int rows = array.GetLength(0);
int columns = array.GetLength(1);
if (rows == 0 || columns == 0)
return array;
var rowLast = caller.RowFirst + rows - 1;
var columnLast = caller.ColumnFirst + columns - 1;
if (rowLast > ExcelDnaUtil.ExcelLimits.MaxRows - 1 ||
columnLast > ExcelDnaUtil.ExcelLimits.MaxColumns - 1)
{
return ExcelError.ExcelErrorValue;
}
ExcelAsyncUtil.QueueAsMacro(
delegate
{
var newTarget = new ExcelReference(caller.RowFirst + 1, rowLast + 1, caller.ColumnFirst, columnLast, caller.SheetId);
Microsoft.Office.Interop.Excel.Application oxl = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");
oxl.Visible = true;
Workbook wrkbk = oxl.ActiveWorkbook;
string wbkname =wrkbk.Name;
Worksheet wrksht = wrkbk.ActiveSheet ;
string wrksheetname = oxl.ActiveSheet.Name;
object cell1 = wrksht.Cells[newTarget.RowFirst+1, newTarget.ColumnFirst];
object cell2 = wrksht.Cells[newTarget.RowFirst+1
, newTarget.ColumnLast];
Range headerRange = wrksht.get_Range(cell1, cell2);
wrksht.ListObjects.AddEx(XlListObjectSourceType.xlSrcRange, headerRange, Type.Missing,XlYesNoGuess.xlYes,Type.Missing).Name= "MyTableStyle";
wrksht.ListObjects.get_Item("MyTableStyle").TableStyle = "TableStyleMedium9";
newTarget.SetValue(array);
} );
return array;
}