![](/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.