![](/img/trans.png)
[英]How to convert Excel 2003 templates to Excel 2007 templates using C#?
[英].NET Component for Excel 2003 spreadsheet generation using templates for formatting
我的应用程序试图解决的问题是:
当前,正在运行几个存储过程,将数据从SQL结果中手动复制到空白电子表格中,然后报表分析人员将数据格式化。 该过程被认为太长且成本很高。
理想的解决方案(在我看来)是带有组件的.NET应用程序,该组件可以获取存储过程结果并将其写入工作表模板中的特定单元格区域(保持模板格式),然后我可以将结果整理到工作簿中在.NET应用程序中。
那里有这样的应用程序吗? 更好的是,有人有更好的解决方案吗?
感谢您的考虑。
我用来设置数据的内容
以以下形式获取数据
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);
}
这应该保持模板格式,并一次设置数据,比逐个单元设置数据要快得多。
希望能有所帮助
您始终可以通过互操作使用Excel Automation。 当所需的输出是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);
}
使用SpreadsheetGear for .NET,您可以打开Excel工作簿,插入值并保存工作簿。
你可以看到Excel的报表(即导出到Excel)样品这里并下载免费试用这里 。
免责声明:我拥有SpreadsheetGear LLC
在这个问题上,我要求类似的内容。 所不同的是,我想要一些东西来生成XML文件,该文件被Excel解释为电子表格。 如果可以将数据发送到XML文件,然后将XML转换为SpreadsheetML,则可以解决您的问题。 但是SpreadsheetXM确实有一些限制。 它不需要安装Excel,并且转换可以非常快速。 如果使用Excel 2007,则可以使用第二种XML格式,即Microsoft Office XML格式。 基本上,它很慢,因为我怀疑您当前的代码正在通过COM与Excel交互。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.