用于格式化模板的用于Excel 2003电子表格生成的.NET组件

我的应用程序试图解决的问题是这样的:

目前,运行了多个存储过程,将数据手动从SQL结果中复制到空白电子表格中,报告分析员格式化数据。 这个过程被认为是太长和昂贵的。

理想的解决scheme(在我看来)是一个带有一个组件的.NET应用程序,它可以获取存储过程的结果并将其写入工作表模板中的特定单元格范围(维护模板格式),然后我可以将结果整理到工作簿在.NET应用程序中。

那里有这样的应用程序吗? 更好的是,有没有人有更好的解决scheme?

感谢您的考虑。

我用什么来设置数据

获取数据的forms

object[,] excelSpreadsheetData 

然后通过设置应用数据

 public void SetWorksheetData(long rowCount, long columnCount, object[,] excelSpreadsheetData, int startingRow, int startingCol, Worksheet worksheet) { if (rowCount == 0 || columnCount == 0) return; //set the region data. object m_objOpt = Missing.Value; Range cellRange = worksheet.get_Range(ExcelGeneratorUtils.ExcelColumnFromNumber(startingCol) + startingRow, m_objOpt); cellRange = cellRange.get_Resize(rowCount, columnCount); cellRange.set_Value(m_objOpt, excelSpreadsheetData); } 

这应该保持模板格式化,并一次性设置数据,比单元格设置要快得多。

希望有所帮助

SpreadsheetGear for .NET将允许您打开Excel工作簿,插入值并保存工作簿。

您可以在这里看到Excel报告(即导出到Excel)样本,并在此处下载免费试用版。

免责声明:我自己的SpreadsheetGear LLC

您始终可以通过interop使用Excel自动化。 当有需要的输出是Excel时,我已经做了这个。 它惊人的快,你必须小心,虽然自己清理,而不会离开Excel的实例运行。 这里是一个简短的例子。

  using Excel = Microsoft.Office.Interop.Excel; Excel.ApplicationClass _Excel; Excel.Workbook WB; Excel.Worksheet WS; _Excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); WB = _Excel.Workbooks.Add(System.Reflection.Missing.Value); WS = (Excel.Worksheet)WB.Worksheets[1]; WS.Name = "Test"; try { int row; int col; WS.Cells[++row, col] = "COL1"; WS.Cells[row, ++col] = "COL2"; WS.get_Range("A1", "A2").Font.Bold = true; WS.get_Range("A1", "A2").HorizontalAlignment =Excel.XlHAlign.xlHAlignCenter; WS.Cells[++row, col] = "Customer"; WS.Cells[++row, col] = "Expenses" WS.get_Range("A1", "B1").Font.Bold = true; WS.Columns.AutoFit(); WS.Rows.AutoFit(); WS.Activate(); _Excel.Visible = true; } catch (Exception ex) { WB.Close(false, Type.Missing, Type.Missing); _Excel.Quit(); throw; } finally { GC.Collect(); GC.WaitForPendingFinalizers(); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WS); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel); } 

在这个问题上,我要求了类似的东西。 不同之处在于我希望生成一个由Excel解释为电子表格的XML文件。 如果您可以将数据发送到XML文件,然后将XML转换为SpreadsheetML,那么这可能会解决您的问题。 但是SpreadsheetXM确实有一些限制。 它不需要安装Excel,转换可以真正快速。 如果您使用Excel 2007,则可以使用另一种XML格式,即Microsoft Office XML格式。 基本上,这很慢,因为我怀疑你的当前代码是通过COM与Excel进行交互的。