2013-04-24 12 views
17

Eksportuję dane z listy <> do programu Excel. Chcę pogrubić określone wiersze i komórki. Muszę również scalić niektóre komórki.Jak mogę pogrubić czcionki określonego wiersza lub komórki w arkuszu programu Excel z C#?

Poniżej znajduje się kod, którego używam.

try 
     { 
      Excel.Application application; 
      Excel.Workbook workBook; 
      Excel.Worksheet workSheet; 
      object misValue = System.Reflection.Missing.Value; 

      application = new Excel.ApplicationClass(); 
      workBook = application.Workbooks.Add(misValue); 
      workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(1); 

      int i = 1; 
      workSheet.Cells[i, 2] = "MSS Close Sheet";     
      i++; 
      workSheet.Cells[i, 2] = "MSS - " + dpsNoTextBox.Text; 
      i++; 
      workSheet.Cells[i, 2] = customerNameTextBox.Text; 
      i++;     
      workSheet.Cells[i, 2] = "Opening Date : "; 
      workSheet.Cells[i, 3] = openingDateTextBox.Value.ToShortDateString(); 
      i++; 
      workSheet.Cells[i, 2] = "Closing Date : "; 
      workSheet.Cells[i, 3] = closingDateTextBox.Value.ToShortDateString(); 
      i++; 
      i++; 
      i++; 

      workSheet.Cells[i, 1] = "SL. No"; 
      workSheet.Cells[i, 2] = "Month"; 
      workSheet.Cells[i, 3] = "Amount Deposited"; 
      workSheet.Cells[i, 4] = "Fine"; 
      workSheet.Cells[i, 5] = "Cumulative Total"; 
      workSheet.Cells[i, 6] = "Profit + Cumulative Total"; 
      workSheet.Cells[i, 7] = "Profit @ " + profitRateComboBox.Text; 
      i++; 



      ///////////////////////////////////////////////////////// 
      foreach (RecurringDeposit rd in RecurringDepositList) 
      { 
       workSheet.Cells[i, 1] = rd.SN.ToString(); 
       workSheet.Cells[i, 2] = rd.MonthYear; 
       workSheet.Cells[i, 3] = rd.InstallmentSize.ToString(); 
       workSheet.Cells[i, 4] = ""; 
       workSheet.Cells[i, 5] = rd.CumulativeTotal.ToString(); 
       workSheet.Cells[i, 6] = rd.ProfitCumulative.ToString(); 
       workSheet.Cells[i, 7] = rd.Profit.ToString(); 
       i++; 
      } 
      ////////////////////////////////////////////////////// 


      //////////////////////////////////////////////////////// 
      workSheet.Cells[i, 2] = "Total (" + RecurringDepositList.Count + " months installment)"; 
      workSheet.Cells[i, 3] = totalAmountDepositedTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "a) Total Amount Deposited"; 
      workSheet.Cells[i, 3] = totalAmountDepositedTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "b) Fine"; 
      workSheet.Cells[i, 3] = ""; 
      i++; 

      workSheet.Cells[i, 2] = "c) Total Pft Paid"; 
      workSheet.Cells[i, 3] = totalProfitPaidTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Sub Total"; 
      workSheet.Cells[i, 3] = (totalAmountDepositedTextBox.Value + totalProfitPaidTextBox.Value).ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Deduction"; 
      i++; 

      workSheet.Cells[i, 2] = "a) Excise Duty"; 
      workSheet.Cells[i, 3] = "0"; 
      i++; 

      workSheet.Cells[i, 2] = "b) Income Tax on Pft. @ " + incomeTaxPercentageTextBox.Text; 
      workSheet.Cells[i, 3] = "0"; 
      i++; 

      workSheet.Cells[i, 2] = "c) Account Closing Charge "; 
      workSheet.Cells[i, 3] = closingChargeCommaNumberTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "d) Outstanding on BAIM(FO) "; 
      workSheet.Cells[i, 3] = baimFOLowerTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Total Deduction "; 
      workSheet.Cells[i, 3] = (incomeTaxDeductionTextBox.Value + closingChargeCommaNumberTextBox.Value + baimFOTextBox.Value).ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Client Paid "; 
      workSheet.Cells[i, 3] = customerPayableNumberTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "e) Current Balance "; 
      workSheet.Cells[i, 3] = currentBalanceCommaNumberTextBox.Value.ToString("0.00"); 
      workSheet.Cells[i, 5] = "Exp. Pft paid on MSS A/C(PL67054)"; 
      workSheet.Cells[i, 6] = plTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "e) Total Paid "; 
      workSheet.Cells[i, 3] = customerPayableNumberTextBox.Value.ToString("0.00"); 
      workSheet.Cells[i, 5] = "IT on Pft (BDT16216)"; 
      workSheet.Cells[i, 6] = incomeTaxDeductionTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Difference"; 
      workSheet.Cells[i, 3] = (currentBalanceCommaNumberTextBox.Value - customerPayableNumberTextBox.Value).ToString("0.00"); 
      workSheet.Cells[i, 5] = "Account Closing Charge"; 
      workSheet.Cells[i, 6] = closingChargeCommaNumberTextBox.Value; 
      i++; 

      /////////////////////////////////////////////////////////////// 

      workBook.SaveAs("D:\\" + dpsNoTextBox.Text.Trim() + "-" + customerNameTextBox.Text.Trim() + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
      workBook.Close(true, misValue, misValue); 
      application.Quit(); 

      releaseObject(workSheet); 
      releaseObject(workBook); 
      releaseObject(application); 

The sheet should look like this:

Odpowiedz

7

Twoje pytanie jest trochę niejasne ... jako części, które wskazują chcesz śmiały w programie Excel jest DataGridView w imporcie z metodą słowo. Czy może chcesz pogrubić pierwszy wiersz w dokumencie programu Excel?

using xl = Microsoft.Office.Interop.Excel; 

xl.Range rng = (xl.Range)xlWorkSheet.Rows[0]; 
rng.Font.Bold = true; 

To proste!

HTH, Z

+1

Ten kod nawet się nie kompiluje. xlWorkSheet.Rows [0,0] to tablica 2d. – anonymous

+0

Musisz zwrócić to '(xl.Range) xlWorkSheet.Cells [0,0];' –

+0

Przepraszamy za komentarz 3,5 roku później, ale ten kod działa, jeśli zmienię 'xl.Range rng = (xl.Zakres) 'to be 'Zakres rng = (Zakres)' – Sanya

51

Jak Pogrubienie cały rząd 10 Przykład:

workSheet.Cells[10, 1].EntireRow.Font.Bold = true;  

Formalnie:

Microsoft.Office.Interop.Excel.Range rng = workSheet.Cells[10, 1] as Xl.Range; 
rng.EntireRow.Font.Bold = true; 

Jak Bold określonej komórki 'A10' na przykład:

workSheet.Cells[10, 1].Font.Bold = true; 

nieco bardziej formalny:

int row = 1; 
int column = 1; /// 1 = 'A' in Excel 

Microsoft.Office.Interop.Excel.Range rng = workSheet.Cells[row, column] as Xl.Range; 
rng.Font.Bold = true; 
4

Zrobiłem to w projekcie dawno temu. Poniższy kod zapisuje całe wiersze pogrubione z określonymi nazwami kolumn, a wszystkie te kolumny są napisane pogrubioną czcionką.

private void WriteColumnHeaders(DataColumnCollection columnCollection, int row, int column) 
    { 
     // row represent particular row you want to bold its content. 
     for (i = 0; i < columnCollection.Count; i++) 
     { 
      DataColumn col = columnCollection[i]; 
      xlWorkSheet.Cells[row, column + i + 1] = col.Caption; 
      // Some Font Styles 
      xlWorkSheet.Cells[row, column + i + 1].Style.Font.Bold = true; 
      xlWorkSheet.Cells[row, column + i + 1].Interior.Color = Color.FromArgb(192, 192, 192); 
      //xlWorkSheet.Columns[i + 1].ColumnWidth = xlWorkSheet.Columns[i+1].ColumnWidth + 10; 
     } 
    } 

Musisz podać wartość rzędu 0, aby pierwszy wiersz arkuszy programu Excel miał nagłówki kolumn z pogrubioną czcionką. Po prostu zmień DataColumnCollection na nazwę kolumny i zmień col.Caption na konkretną nazwę kolumny.

Alternatywny

Można to zrobić na komórce arkusza excel chcesz pogrubione.

xlWorkSheet.Cells[row, column].Style.Font.Bold = true; 
-1

Poniżej znajduje się dokładny kod trzeba zrobić swój wygląd arkuszy dokładnie jak to jest w załączonym pliku PDF:

try 
     { 
      Excel.Application application; 
      Excel.Workbook workBook; 
      Excel.Worksheet workSheet; 
      object misValue = System.Reflection.Missing.Value; 

      application = new Excel.ApplicationClass(); 
      workBook = application.Workbooks.Add(misValue); 
      workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(1); 

      int i = 1; 
      workSheet.Cells[i, 2] = "MSS Close Sheet"; 
      WorkSheet.Cells[i, 2].Style.Font.Bold = true;    
      i++; 
      workSheet.Cells[i, 2] = "MSS - " + dpsNoTextBox.Text; 
      WorkSheet.Cells[i, 2].Style.Font.Bold = true; 
      i++; 
      workSheet.Cells[i, 2] = customerNameTextBox.Text; 
      i++;     
      workSheet.Cells[i, 2] = "Opening Date : "; 
      workSheet.Cells[i, 3] = openingDateTextBox.Value.ToShortDateString(); 
      i++; 
      workSheet.Cells[i, 2] = "Closing Date : "; 
      workSheet.Cells[i, 3] = closingDateTextBox.Value.ToShortDateString(); 
      i++; 
      i++; 
      i++; 

      workSheet.Cells[i, 1] = "SL. No"; 
      workSheet.Cells[i, 2] = "Month"; 
      workSheet.Cells[i, 3] = "Amount Deposited"; 
      workSheet.Cells[i, 4] = "Fine"; 
      workSheet.Cells[i, 5] = "Cumulative Total"; 
      workSheet.Cells[i, 6] = "Profit + Cumulative Total"; 
      workSheet.Cells[i, 7] = "Profit @ " + profitRateComboBox.Text; 
      WorkSheet.Cells[i, 1].EntireRow.Font.Bold = true; 
      i++; 



      ///////////////////////////////////////////////////////// 
      foreach (RecurringDeposit rd in RecurringDepositList) 
      { 
       workSheet.Cells[i, 1] = rd.SN.ToString(); 
       workSheet.Cells[i, 2] = rd.MonthYear; 
       workSheet.Cells[i, 3] = rd.InstallmentSize.ToString(); 
       workSheet.Cells[i, 4] = ""; 
       workSheet.Cells[i, 5] = rd.CumulativeTotal.ToString(); 
       workSheet.Cells[i, 6] = rd.ProfitCumulative.ToString(); 
       workSheet.Cells[i, 7] = rd.Profit.ToString(); 
       i++; 
      } 
      ////////////////////////////////////////////////////// 


      //////////////////////////////////////////////////////// 
      workSheet.Cells[i, 2] = "Total (" + RecurringDepositList.Count + " months installment)"; 
      WorkSheet.Cells[i, 2].Style.Font.Bold = true; 
      workSheet.Cells[i, 3] = totalAmountDepositedTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "a) Total Amount Deposited"; 
      workSheet.Cells[i, 3] = totalAmountDepositedTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "b) Fine"; 
      workSheet.Cells[i, 3] = ""; 
      i++; 

      workSheet.Cells[i, 2] = "c) Total Pft Paid"; 
      workSheet.Cells[i, 3] = totalProfitPaidTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Sub Total"; 
      WorkSheet.Cells[i, 2].Style.Font.Bold = true; 
      workSheet.Cells[i, 3] = (totalAmountDepositedTextBox.Value + totalProfitPaidTextBox.Value).ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Deduction"; 
      WorkSheet.Cells[i, 2].Style.Font.Bold = true; 
      i++; 

      workSheet.Cells[i, 2] = "a) Excise Duty"; 
      workSheet.Cells[i, 3] = "0"; 
      i++; 

      workSheet.Cells[i, 2] = "b) Income Tax on Pft. @ " + incomeTaxPercentageTextBox.Text; 
      workSheet.Cells[i, 3] = "0"; 
      i++; 

      workSheet.Cells[i, 2] = "c) Account Closing Charge "; 
      workSheet.Cells[i, 3] = closingChargeCommaNumberTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "d) Outstanding on BAIM(FO) "; 
      workSheet.Cells[i, 3] = baimFOLowerTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Total Deduction "; 
      WorkSheet.Cells[i, 2].Style.Font.Bold = true; 
      workSheet.Cells[i, 3] = (incomeTaxDeductionTextBox.Value + closingChargeCommaNumberTextBox.Value + baimFOTextBox.Value).ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Client Paid "; 
      WorkSheet.Cells[i, 2].Style.Font.Bold = true; 
      workSheet.Cells[i, 3] = customerPayableNumberTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "e) Current Balance "; 
      workSheet.Cells[i, 3] = currentBalanceCommaNumberTextBox.Value.ToString("0.00"); 
      workSheet.Cells[i, 5] = "Exp. Pft paid on MSS A/C(PL67054)"; 
      workSheet.Cells[i, 6] = plTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "e) Total Paid "; 
      workSheet.Cells[i, 3] = customerPayableNumberTextBox.Value.ToString("0.00"); 
      workSheet.Cells[i, 5] = "IT on Pft (BDT16216)"; 
      workSheet.Cells[i, 6] = incomeTaxDeductionTextBox.Value.ToString("0.00"); 
      i++; 

      workSheet.Cells[i, 2] = "Difference"; 
      WorkSheet.Cells[i, 2].Style.Font.Bold = true; 
      workSheet.Cells[i, 3] = (currentBalanceCommaNumberTextBox.Value - customerPayableNumberTextBox.Value).ToString("0.00"); 
      workSheet.Cells[i, 5] = "Account Closing Charge"; 
      workSheet.Cells[i, 6] = closingChargeCommaNumberTextBox.Value; 
      i++; 

      /////////////////////////////////////////////////////////////// 

      workBook.SaveAs("D:\\" + dpsNoTextBox.Text.Trim() + "-" + customerNameTextBox.Text.Trim() + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
      workBook.Close(true, misValue, misValue); 
      application.Quit(); 

      releaseObject(workSheet); 
      releaseObject(workBook); 
      releaseObject(application); 
+0

Ten kod nie jest kompilowany. – anonymous

+0

Biorąc pod uwagę, że użyłem rejestratora makr, aby arkusz wyglądał dokładnie tak, jak załączony plik PDF, który podałeś, uważam to za interesujące. Domyślam się, że Excel nie może napisać kodu, który kompiluje się poprawnie? –

1

to działa na mnie, więc spróbuj go:

Microsoft.Office.Interop.Excel.Range rng =(Microsoft.Office.Interop.Excel.Range)XcelApp.Cells[1, i]; 
rng.Font.Bold = true; 
rng.Interior.Color =System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow); 
rng.BorderAround(); 
+0

To działa, ale czy możesz powiedzieć inny sposób podawania całego wiersza lub właściwości kolumn takich jak ta @ MORFEE89 –

Powiązane problemy