簡體   English   中英

使用c#在一個單元格中使用多種格式

[英]Multiple Formats in one cell using c#

我想在我的工作簿中的一個單元格中使用mutple格式類型。 例如,我希望我的A1單元格顯示“ Name: Aaron Kruger”。 當我以編程方式將名稱“Aaron Kruger”添加到模板時,它會自動將其設置為粗體。 所以它看起來像這個“ 名字:Aaron Kruger ”。 所以我想在同一個單元格中加粗和非粗體。 也許在將來我會想要在同一個單元格中有兩種不同的文本大小。 謝謝,Aaron Kruger

這是我創建的函數:

    public void inputData(int row, int column, string cellName, System.Windows.Forms.TextBox textBox, Excel.Worksheet sheet)
    {
        sheet.Cells[row, column] = sheet.get_Range(cellName, Type.Missing).Text + " " + textBox.Text; // adds value to sheet
    }

以下是我傳遞的參數:

        inputData(5, 1, "A5", tbTagNumber, xlSheet);
        inputData(6, 1, "A6", tbCustomer, xlSheet);
        inputData(7, 1, "A5", tbDataFile, xlSheet);
        inputData(3, 6, "F3", tbJobNumber, xlSheet);
        inputData(4, 6, "F4", tbMeterSN, xlSheet);
        inputData(6, 6, "F6", tbPO, xlSheet);
        inputData(7, 6, "F7", tbFlowplate, xlSheet);
        inputData(4, 9, "I4", tbElectronicSN, xlSheet);
Range rng1 = ws.getRange("A1","E10");
for(int i=0;i<10;i++)
{
    Range rngTst=rng.cells[i,i];
    for(int j=0;j<rngTst.get_characters().count;j++)
    {
        rngTst.application.activecell.get_characters(j,j).font.color
    }
}

要么

int sFirstFoundAddress = currentFind.FormulaR1C1Local.ToString().IndexOf("NOT FOR CIRCULATION ");

get_Range(excel.Cells[1, 1],
    excel.Cells[1, dtData.Columns.Count])
        .get_Characters(sFirstFoundAddress, 20).Font.Color =
            System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);

使用Microsoft.Office.Interop.Excel.Range ,它將每個字符作為字符類型。 現在使用其Font和其他屬性來設置它們的樣式。

請參考此處的示例: http//www.bloodforge.com/post/Extract-Formatted-Text-From-Excel-Cell-With-C.aspx

 Microsoft.Office.Interop.Excel.Range Range = (Microsoft.Office.Interop.Excel.Range)Cell;
   int TextLength = Range.Text.ToString().Length;
   for (int CharCount = 1; CharCount <= TextLength; CharCount++)
   {
       Microsoft.Office.Interop.Excel.Characters charToTest = Range.get_Characters(CharCount, 1);
       bool IsBold = (bool)charToTest.Font.Bold;
       bool IsItalic = (bool)charToTest.Font.Italic;
       // other formatting tests here

   }

我錄制了一個宏,將它翻譯成C#應該不難:

ActiveCell.FormulaR1C1 = "Test test"
Range("A1").Select
ActiveCell.FormulaR1C1 = "Test test"
With ActiveCell.Characters(Start:=1, Length:=5).Font
    .Name = "Calibri"
    .FontStyle = "Regular"
    .Size = 11
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ThemeColor = xlThemeColorLight1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontMinor
End With
With ActiveCell.Characters(Start:=6, Length:=4).Font
    .Name = "Calibri"
    .FontStyle = "Bold"
    .Size = 11
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ThemeColor = xlThemeColorLight1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontMinor
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM