使用C#在Excel单元格中创建和设置样式?

时间:2014-02-18 21:36:14

标签: c# .net excel export-to-excel

如何使用C#在Excel单元格中创建和设置样式?

我想用 st 作为上标来写“ 4月1日”之类的内容。 我会使用字符串格式而不是日期格式。

我已经尝试了http://msdn.microsoft.com/en-us/library/f1hh9fza.aspx但是获得当前上下文中不存在名称'Globals'错误。我添加了程序集Microsoft.Office.Interlop.Excel。我错过了其他任何组装吗?

Excel.Style style = Globals.ThisWorkbook.Styles.Add("NewStyle");

2 个答案:

答案 0 :(得分:2)

您实际上不想更改整个单元格的字体,但是您要更改我拍摄的单元格中的部分文本。 您仍然需要检索单元格范围,然后调整该范围内的字符。这是一个例子,它只是调整第一个单元格。 A1。

如果你想将整个细胞范围改为上标,就可以这样做     currentRange.Font.Superscript = true;

void Main()
{
         var app = new Application();
        app.Visible = true;
        var workbook = app.Workbooks.Add(1);

        Sheets excelSheets = workbook.Worksheets;
        string currentSheet = "Sheet1";
        Worksheet worksheet1 = (Worksheet)excelSheets.get_Item(currentSheet);

        worksheet1.Cells[1, 1] = "April 1st";
        worksheet1.Cells[1, 2] = "April 2nd";
        worksheet1.Cells[1, 3] = "April 3rd";
        worksheet1.Cells[1, 4] = "April 4th";

        // fill in the starting and ending range programmatically this is just an example. 
        string startRange = "A1";
        string endRange = "A1";
        Range currentRange = worksheet1.get_Range(startRange , endRange );

        var text = currentRange.Text.ToString();
        int length = text.Length;
        int index = 0;
        if(text.Contains("st"))
        {
            index =text.IndexOf("st");
        }
        //The other checks for "nd", "rd", "th" obviously check to see a # precedes these.

        if(index > 0)
        {           
            currentRange.get_Characters( index+1, 2).Font.Superscript  = true;              
        }           
}

答案 1 :(得分:1)

作为MSDN文章,您已链接到州:

  

适用于:本主题中的信息适用于文档级   Office 2013和Office的项目和应用程序级项目   2010.查看Office应用程序和项目类型可用的功能。

要使用Globals类,您必须创建Office项目。有关其他参考,您可以查看有关创建Office加载项的this question

  

Globals.ThisAddin.Application只能用于VSTO加载项