2017-04-26 94 views
2

我創建使用數據表中的Excel互操作如何將xml架構/設計文件添加到Excel Interop?

Price   Profit/Loss% 

250.8982989  0.04301071 

我有這對於設計 1細節的架構文件)Excel文件使所有的標題加粗 2)列定義(天氣,串,百分比)

我以前在快速報表導出該文件,但這樣我必須使用互操作的Excel導出是有辦法,我可以添加模式文件

Excel.Application excelApp = new Excel.Application(); 

      //Create an Excel workbook instance and open it from the predefined location 
      Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); 


      //Add a new worksheet to workbook with the Datatable name 
      Excel.Worksheet excelWorkSheet = (Excel.Worksheet)excelWorkBook.Sheets.Add(); 


      for (int i = 1; i < table.Columns.Count + 1; i++) 
      { 
       excelWorkSheet.Cells[1, i] = table.Columns[i - 1].ColumnName; 
      } 

      for (int j = 0; j < table.Rows.Count; j++) 
      { 
       for (int k = 0; k < table.Columns.Count; k++) 
       { 
        excelWorkSheet.Cells[j + 2, k + 1] = table.Rows[j].ItemArray[k].ToString(); 
       } 
      } 

      excelWorkBook.SaveAs(@"D:\sample excel.xls"); 
      excelWorkBook.Close(); 
      excelApp.Quit(); 

我想顯示粗體格式此值,並以%0.04301071

使這個值大膽和全面250.8982989

這所有的信息將被存儲在一個模式文件我想加載該文件

否則我想的是小區負載按照列的數據類型DataTable中

我曾嘗試: -

clmnrange.NumberFormat = (Object)table.Columns[k - 1].DataType; 

但它拋出一個異常

問候 EP

+0

我有同樣的問題任何人都可以提出解決方案 – Lucifer

+0

您可以提供一個完整的示例(如2列和2行)與模式XML,數據和預期結果?現在的問題是不完整的(「表格」甚至沒有定義,...) – grek40

+1

NumberFormat屬性接受一個使用Excel格式化語法的字符串。例如格式化爲百分比(最多)小數點後8位是「0。########%」。我猜你正試圖分配的「DataType」屬性不是Excel格式的字符串設置。我認爲你需要將表格中的任何格式定義轉換爲Excel用於格式化的方法。 – Wedge

回答

2

正如above comment提到:

NumberFormat屬性需要使用Excel的格式 語法的字符串。例如格式化爲一個百分比(最高)8小數 位是「0。########%」

Here是一個例子,別人提供展示如何實現numberingFormat類型你所描述的:

WorkbookStylesPart sp = workbookPart.AddNewPart<WorkbookStylesPart>(); 

創建一個樣式表:

sp.Stylesheet = new Stylesheet(); 

創建numberingFormat:

sp.Stylesheet.NumberingFormats = new NumberingFormats(); 
// #.##% is also Excel style index 1 

NumberingFormat nf2decimal = new NumberingFormat(); 
nf2decimal.NumberFormatId = UInt32Value.FromUInt32(3453); 
nf2decimal.FormatCode = StringValue.FromString("0.0%"); 
sp.Stylesheet.NumberingFormat.Append(nf2decimal);