iT邦幫忙

0

C# Excel 清除格式

我是使用 Epplus 來處理 Excel
然後,我想把Excel的文字格式全部清掉,可是找不到指令

就像Excel右上角有個清除格式,我找不到Epplus的這個指令。

deh iT邦研究生 1 級 ‧ 2021-05-11 08:27:05 檢舉
excelRange.Style把格式都改成預期的
...轉答
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
japhenchen
iT邦超人 1 級 ‧ 2021-05-11 08:53:08
最佳解答

超級唬爛的方法,暴力複製"only value"

string xlsx = "c:\temp\a.xlsx";
using (ExcelPackage ep = new ExcelPackage(new FileInfo(xlsx)))
{
    ExcelWorksheet sh =
         ep.Workbook.Worksheets.First();

    List<List<object>> alldata = new List<List<object>>();
    for (int r = 1; r <= sh.Dimension.Rows; r++)
    {
        var ritem = new List<object>();
        for (int c = 1; c <= sh.Dimension.Columns; c++)
        {
            ritem.Add(sh.Cells[r, c].Value);
        }
        alldata.Add(ritem);
    }

    ExcelWorksheet shnew =
         ep.Workbook.Worksheets.Add(sh.Name+"temp");
    int R = 1;
    foreach (var row in alldata)
    {
        int c = 1;
        foreach(var cell in row)
        {
            shnew.Cells[R, c].Value = cell;
            c++;
        }
        R++;
    }
    ep.Save();
}

我裡面的字都須要留下來,只是想要把他的格式(顏色字體那些格式化),並不是連值都刪除

我回復才發現原來的方法不可行,也找不到可行的方法,只好改用把內容複製到另外一個表,不帶style,方法放在上面的回應裡了

建議把中間的

    ExcelWorksheet shnew =
         ep.Workbook.Worksheets.Add(sh.Name+"temp");

改成

    ep.Workbook.Worksheets.Delete(sh);
    ExcelWorksheet shnew =
         ep.Workbook.Worksheets.Add(sh.Name);

原來的工作表就會被頂替掉

0
rogeryao
iT邦超人 8 級 ‧ 2021-05-10 15:03:07

方法一 :
換個角度思考 : 刪掉舊的,產生新的

請參閱 : 以程式設計方式從活頁簿中刪除工作表
請參閱 : 以程式設計方式在活頁簿中加入新的工作表

方法二 :
請參閱 : EXCEL VBA:儲存格的格式設定
關鍵字 : 儲存格的資料格式
Selection.NumberFormatLocal = "G/通用格式"

我要發表回答

立即登入回答