1. 程式人生 > >C# Aspose.Cells.dll Excel操作總結

C# Aspose.Cells.dll Excel操作總結

簡介

Aspose.Cells是一款功能強大的 Excel 文件處理和轉換控制元件,不依賴 Microsoft Excel 環境,支援所有 Excel 格式型別的操作。

獲取Excel資料

Workbook workbook = new Workbook("E:\\test.xlsx");
Cells cells = workbook.Worksheets[0].Cells;
for (int i = 0; i < cells.MaxDataRow + 1; i++)
{
    for (int j = 0; j < cells.MaxDataColumn + 1
; j++) { string s = cells[i, j].StringValue.Trim(); //一行行的讀取資料,插入資料庫的程式碼也可以在這裡寫 } }

返回DataTable資料

Workbook workbook = new Workbook("E:\\test.xlsx");
Cells cells = workbook.Worksheets[0].Cells;
System.Data.DataTable dataTable1 = cells.ExportDataTable(1, 0, cells.MaxDataRow, cells.MaxColumn);//沒有標題
System.Data.DataTable dataTable2 = cells.ExportDataTable(0, 0, cells.MaxDataRow + 1, cells.MaxColumn, true);//有標題

無標題

有標題

使用小結

生成Excel

/// <summary>
/// DataTable資料匯出Excel
/// </summary>
/// <param name="data"></param>
/// <param name="filepath"></param>
public static
void DataTableExport(DataTable data, string filepath) { try { //Workbook book = new Workbook("E:\\test.xlsx"); //開啟工作簿 Workbook book = new Workbook(); //建立工作簿 Worksheet sheet = book.Worksheets[0]; //建立工作表 Cells cells = sheet.Cells; //單元格 //建立樣式 Aspose.Cells.Style style = book.Styles[book.Styles.Add()]; style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應用邊界線 左邊界線 style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應用邊界線 右邊界線 style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應用邊界線 上邊界線 style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應用邊界線 下邊界線 style.HorizontalAlignment = TextAlignmentType.Center; //單元格內容的水平對齊方式文字居中 style.Font.Name = "宋體"; //字型 style1.Font.IsBold = true; //設定粗體 style.Font.Size = 11; //設定字型大小 //style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景色 //style.Pattern = Aspose.Cells.BackgroundType.Solid; //背景樣式 //style.IsTextWrapped = true; //單元格內容自動換行 //表格填充資料 int Colnum = data.Columns.Count;//表格列數 int Rownum = data.Rows.Count;//表格行數 //生成行 列名行 for (int i = 0; i < Colnum; i++) { cells[0, i].PutValue(data.Columns[i].ColumnName); //新增表頭 cells[0, i].SetStyle(style); //新增樣式 //cells.SetColumnWidth(i, data.Columns[i].ColumnName.Length * 2 + 1.5); //自定義列寬 //cells.SetRowHeight(0, 30); //自定義高 } //生成資料行 for (int i = 0; i < Rownum; i++) { for (int k = 0; k < Colnum; k++) { cells[1 + i, k].PutValue(data.Rows[i][k].ToString()); //新增資料 cells[1 + i, k].SetStyle(style); //新增樣式 } cells[1 + i, 5].Formula = "=B" + (2 + i) + "+C" + (2 + i);//給單元格設定計算公式,計算班級總人數 } sheet.AutoFitColumns(); //自適應寬 book.Save(filepath); //儲存 GC.Collect(); } catch (Exception e) { logger.Error("生成excel出錯:" + e.Message); } }

呼叫Excel(例子)

public void DownExcel()
{
    //建立DataTable
    DataTable dt = new DataTable("Table_AX");
    dt.Columns.Add("班級名稱", System.Type.GetType("System.String"));
    dt.Columns.Add("男生人數", System.Type.GetType("System.String"));
    dt.Columns.Add("女生人數", System.Type.GetType("System.String"));
    dt.Columns.Add("今日請假", System.Type.GetType("System.String"));
    dt.Columns.Add("今日遲到", System.Type.GetType("System.String"));
    Random ran = new Random();
    for (int i = 1; i < 6; i++)
    {
        DataRow dr = dt.NewRow();
        dr["班級名稱"] = "軟體技術" + i + "";
        dr["男生人數"] = ran.Next(1, 50);
        dr["女生人數"] = ran.Next(1, 50);
        dr["今日請假"] = ran.Next(0, 10);
        dr["今日遲到"] = ran.Next(1, 30);
        dt.Rows.Add(dr);
    }
    //地址
    string fileName = "班級概況.xls";
    string filePath = AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/") + "GxContent/data/student/" + fileName + "";
    //生成Excel
    ExcelHelper.DataTableExport(dt, filePath);
    //下載
    if (System.IO.File.Exists(filePath))
    {
        try
        {
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
            if (fileInfo.Exists == true)
            {
                //每次讀取檔案,只讀取1M,這樣可以緩解伺服器的壓力
                const long ChunkSize = 1048576;
                byte[] buffer = new byte[ChunkSize];

                Response.Clear();
                //獲取檔案
                System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
                //獲取下載的檔案總大小
                long dataLengthToRead = iStream.Length;
                Response.ContentType = "application/octet-stream";
                //通知瀏覽器下載檔案而不是開啟 
                Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
                using (iStream)//解決檔案佔用問題,using 外 iStream.Dispose() 無法釋放檔案
                {
                    while (dataLengthToRead > 0 && Response.IsClientConnected)
                    {
                        int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//讀取的大小
                        Response.OutputStream.Write(buffer, 0, lengthRead);
                        Response.Flush();
                        dataLengthToRead = dataLengthToRead - lengthRead;
                    }
                    iStream.Dispose();
                    iStream.Close();
                }
                Response.End();
            }
        }
        catch
        {
            Response.Write("<script>alert('檔案未佔用或檔案未生成,請稍後重試!');window.close();</script>");
        }
    }
    else
    {
        Response.Write("<script>alert('檔案還未生成完,請稍後重試!');window.close();</script>");
    }
}

效果

相關推薦

C# Aspose.Cells.dll Excel操作總結

簡介 Aspose.Cells是一款功能強大的 Excel 文件處理和轉換控制元件,不依賴 Microsoft Excel 環境,支援所有 Excel 格式型別的操作。 獲取Excel資料 Workbook workbook = new Workbook("E:\\test.xlsx"); C

C# Aspose.Cells拷貝Excel

Workbook workBook = new Workbook(OFD.FileName); Cells cells = workBook.Worksheets[0].Cells; if (cells == null) return; Data

C# 讀寫Excel的一些方法,Aspose.Cells.dll

需求:現有2個Excel,一個7000,一個20W,7000在20W是完全存在的。現要分離20W的,拆分成19W3和7000。 條件:兩個Excel都有“登入名”,然後用“登入名”去關聯2個Excel public void Excel() { //獲取第一個Excel,20W

Excel操作幫助類 (基於Aspose.Cells.dll)

基於Aspose.Cells.dll 封裝了對於匯出的Excel的各種樣式設定,內容填充操作,目前支援邊框樣式,顏色,字型,合併單元格等操作,簡化Aspose.Cells.dll的使用 呼叫示例 /// ---------->Clo

MVC利用Aspose.Cells.dll實現Excel資料匯入資料庫

/// <summary>匯入Excel資料到資料庫 /// /// </summary> /// <param name="file">檔案</param>

C# Aspose.Cells匯出xlsx格式Excel,開啟檔案報“Excel 已完成檔案級驗證和修復。此工作簿的某些部分可能已被修復或丟棄”

報錯資訊: 最近開啟下載的 Excel,會報如下錯誤。(xls 格式不受影響) 解決方案: 下載程式碼(紅色為新添程式碼) public void download() { string fileName = "456.zip";//客戶端儲存的檔名 string f

C#常用工具類——Excel操作類(ZT)

ada fin bject sta area exec public excel文件 站點 本文轉載於: http://www.cnblogs.com/zfanlong1314/p/3916047.html 1 /// 常用工具類—&mdash

[轉]C語言字符串操作總結大全(超詳細)

轉換 c_str per blog 靜態 母版 們的 set 預留空間 1)字符串操作 strcpy(p, p1) 復制字符串 strncpy(p, p1, n) 復制指定長度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定長度字

使用Aspose.cells實現Excel轉換為pdf

import java.io.FileInputStream; import java.io.InputStream; import com.aspose.cells.License; import com.aspose.cells.SaveFormat; import co

EpPlus讀取生成Excel幫助類+讀取csv幫助類+Aspose.Cells生成Excel幫助類

大部分功能邏輯都在,少量自定義異常類和擴充套件方法 ,可用類似程式碼自己替換//EpPlus讀取生成Excel幫助類+讀取csv幫助類,epplus只支援開放的Excel檔案格式:xlsx,不支援 xls格式/* ===============================

C語言的檔案讀取操作總結

流式檔案操作  這種方式的檔案操作有一個重要的結構FILE,FILE在stdio.h中定義如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags; /* File status flags */char fd;

C 標準庫基礎 IO 操作總結

一、操作控制代碼開啟檔案其實就是在作業系統中分配一些資源用於儲存該檔案的狀態資訊及檔案的標識,以後使用者程式可以用這個標識做各種讀寫操作,關閉檔案則釋放佔用的資源。開啟檔案的函式:#include <stdio.h> FILE *fopen(constchar *

VB呼叫c++寫的Dll的一點總結

因為回撥函式的問題耽誤了我很多的時間,大部分時間都在查詢Debug下程式可以執行,但是EXE執行老是會報錯,而且Debug下執行特別不穩定,除錯呀除錯,老是不行,有人說VB下用回撥函式就是有問題,但是用定時器做了個試驗,在定時器的回撥函式中呼叫系統API,動態庫的API都沒有問題,但是在自己寫的回撥函式中呼叫

C# winform 開發之Excel操作(一)------開啟Exce表

在開始之前,先要匯入Excel的類庫。步驟如下: 把滑鼠移動解決方案---->右擊----->選擇“新增引用”---->會出現一個對話方塊---->選擇標題為.net的頁面----->然後選擇“Microsoft.Office.Interop.E

C#常用工具類——Excel操作

原文出處: http://www.cnblogs.com/wangchuang/p/5546345.html /// 常用工具類——Excel操作類 /// <para> ---------------------------------------

C# Aspose操作Excel

private void ExportExcel_Click(object sender, EventArgs e) { Workbook workBook = new Workbook(System.Environment.GetFolderPath(System.E

Aspose.Cells匯入資料到Excel,支援單元格操作

public class AsposeExcelHelper { /// <summary> /// 操作例項 /// </summary> private Workbook currentWorkboo

C# 各種導入 Excel 文件的數據的方法總結

占用 guid 保存 null amp nbsp 字符串 count str 在導入之前都需要將上傳的文件保存到服務器,所以避免重復的寫這些代碼,先貼出上傳文件並保存到服務器指定路徑的代碼。 protected void btnImport_Click(object s

C#各種導入Excel文件的數據的方法總結

context tab 過程 all dap 添加列 map lease 內存 在導入前都需要將上傳的文件保存到服務器,所以避免重復的寫這些代碼,先貼出上傳文件並保存到服務器指定路徑的代碼 protected void btnImport_Click(object sen

在ASP.NET MVC中利用Aspose.cells 將查詢出的數據導出為excel,並在瀏覽器中下載。

width tdi 新增 column 需求 options 解決 印象 ats 正題前的嘮叨 本人是才出來工作不久的小白菜一顆,技術很一般,總是會有遇到一些很簡單的問題卻不知道怎麽做,這些問題可能是之前解決過的。發現這個問題,想著提升一下自己的技術水平,將一些學的新的‘好