在Excel中使用c#生成dynamic生成的范围名称

在同一张工作表上生成几个未知大小的表的最好方法是什么? 值将从oracle数据库中提取,并用作多个表的值。 是否有可能创builddynamic命名范围或是其他一些方法吗? 我有一些C#的经验,但没有访问VSTO 2005。

任何帮助或build议将不胜感激。

如果要求,我愿意进一步解释这个问题。

打开一个空白的excel文件,对结果进行抽样,并将其保存为XML格式。 将该文件用作生成XML的基础/模板。

优点:

  • 它不需要在计算机上安装Excel来生成XML。
  • 它不创build和Excel对象的实例
  • 它不会调用Excel COM对象(通常很贵)

缺点:

  • 我不知道是否有可能创build多个工作表:)

在ASP.NET中,您可以构build它,并可以在标头中声明内容types为application / vnd.ms-excel。 这样大多数浏览器都会理解它的Excel查找,并尝试用Excel打开。

您可以存储正在使用的最低单元格块的当前值,并继续添加向下的表格,或者像Mike Rosenblum所说的那样,使同一个工作簿中的多个表单会使文档臃肿不less。 如果我误解了你的问题,请告诉我。

  1. 创build一个应该命名的范围对象
  2. 为其Name属性分配一个名称
  3. 将值或值[,]分配给Value2属性

    object[,] values = { { 111, 222, 333 }, { 444, 555, 666 }, { 101, 202, 303 }, { 404, 505, 606 }, { 111, 222, 333 }, { 444, 555, 666 }, { 101, 202, 303 }, { 404, 505, 606 } }; Application excel = new Application(); Workbook workbook = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet sheet = (Worksheet)workbook.Worksheets[1]; int rows = values.GetUpperBound(0) - values.GetLowerBound(0) + 1; int cols = values.GetUpperBound(1) - values.GetLowerBound(1) + 1; // assign a name to an area of cells and fill it with values Range dest = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[rows, cols]); dest.Name = "SORUCE_RANGE"; dest.Value2 = values; // assign a name to a single cell dest = (Range) sheet.Cells[5, 7]; dest.Name = "MY_DESTINATION"; dest.NumberFormatLocal = "TT.MM.JJJJ hh:mm:ss"; //german format syntax dest.Value2 = DateTime.Now; // clean up (best in finally block) workbook.Close(false, null, null); excel.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(excel); 

我希望它有帮助!

不知道你的要求,似乎你想要使用每个表的列表或表。 将列表看作存储在工作表中的小型数据库表。 您可以参考列表的范围,您可以添加logging,删除logging,插入其他列,等等。

你可以做的是为每个表定义一个列表,生成数据,然后将数据插入到列表中。

列表pipe理 – 数据/列表/创build列表或Ctrl + L将列表工具应用于Excel中的列表。 列表范围标有可resize的蓝色边框。 function包括自动过滤标题,插入行和总行。 列表可以导入/导出到XML和SharePoint源。

您可以在Excel 2007中find表的Excel代码示例或在Excel 2003中的列表, url为:http://www.rondebruin.nl/tablecode.htm