2017-04-26 93 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);