使用Aspose.Cell.dll匯出Excel總結

來源:互聯網
上載者:User

標籤:style   http   color   使用   資料   os   

這兩天項目上用Aspose匯出Excel來著。開始感覺挺簡單的,但是實際操作起來還是挺複雜的,調試占的時間很長。主要是動態產生列、合併儲存格、調樣式佔了很長時間,還是總結一下吧。

  基礎操作:

  //EXCEL模板路徑

  var filePath = HttpContext.Current.Server.MapPath("~/" + ConfigurationManager.CurrentPackage.Settings["FilePath"]);

  //開啟模板sheet

    var book = new Workbook();
    book.Open(filePath);
    var sheet = book.Worksheets[0];

    //根據需要給儲存格賦值,Excel行列的索引都是從0開始的。

  sheet.Cells[i,j].PutValue("**");

  動態產生列:

  根據模板情況訪問資料庫得到DataTable,盡量得到和Excel布局相近的資料記錄。迴圈寫儲存格,合并需要合并的儲存格,設定樣式。

  合併儲存格: 

    //合并標題列,因為列是動態添加的,所以標題置中顯示,得重新根據列寬合併儲存格
    Range rangeTitle = sheet.Cells.CreateRange(firstRow, firstColumn, totalRows, totalColumns);//建立需要合并的Range範圍再進行合并
      //rangeTitle.UnMerge(); //如果這個範圍中本來n個儲存格已經是合并過的,需要取消合并再Merge,否則會報錯。
    rangeTitle.Merge(); //合并range

 

  樣式:

    int styleIndex = book.Styles.Add(); //在當前樣式集合中建立一個樣式,返回建立樣式索引,設定樣式必須在原有樣式集合中再添加一個樣式,否則會覆蓋原樣式
    Style style = book.Styles[styleIndex]; 
    style.RotationAngle = 255; //這個角度值研究了半天,可以把漢字從左至右顯示,改成從上到下,垂直顯示。可以試一下。

    Range range = sheet.Cells.CreateRange(startRowIndex - catalogNameRowSpan + 1, 0, catalogNameRowSpan, 1); //得到要使用樣式的範圍
    range.SetStyle(style); //設定樣式

 

    //根據原有樣式,拷貝樣式

    Range rangeRows = sheet.Cells.CreateRange(firstRow, firstColumn, totalRows, totalColumns);//要賦樣式的範圍
    rangeRows.CopyStyle(sheet.Cells.CreateRange(4, 1, 1, 6)); //把(4, 1, 1, 6)的樣式賦到rangeRows範圍上。

 

    //應用樣式(給儲存格加邊框,每個邊的框寬度根據多次設定樣式的最大粗細為準)

    Style GridStyle = book.Styles[book.Styles.Add()];
    GridStyle.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Medium; //設定上邊框粗細
    GridStyle.Borders[BorderType.TopBorder].Color = Color.Black; //設定邊框顏色
    GridStyle.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Medium;//設定下邊框粗細
    GridStyle.Borders[BorderType.BottomBorder].Color = Color.Black;
    GridStyle.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;//設定左邊框粗細
    GridStyle.Borders[BorderType.LeftBorder].Color = Color.Black;
    GridStyle.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Medium;//設定右邊框粗細
    GridStyle.Borders[BorderType.RightBorder].Color = Color.Black;
    GridStyle.HorizontalAlignment = TextAlignmentType.Center;//文本置中對齊
    GridStyle.Font.Size = 9; //設定字型9號
    Range range1 = sheet.Cells.CreateRange(4, 0, 1, 6 + totalColumns); //樣式應用範圍
    StyleFlag borderStyle = new StyleFlag(); //標示集合,啟用哪個樣式
    borderStyle.Borders = true; //啟用Borders樣式
    borderStyle.HorizontalAlignment = true; //啟用水平對齊樣式
    borderStyle.Font = false;//不使用配置的字型樣式
    range1.ApplyStyle(GridStyle, borderStyle); //應用多種樣式。borders設定:由於LeftBorder設定CellBorderType.Thin,範圍是單行多列多儲存格的,所以每個儲存格左邊框被設定兩次,按最粗的樣式顯示,第一個儲存格左框是Thin,其他列的儲存格左框是Medium。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.