Aspose.Cells使用总结大全

2023-05-16

使用到 Aspose.Cells 插件,整理一下。

一:新建解决方案,目录如下

  

  目录说明:

    Program.cs - 入口类

    ExcelGenerator.cs - Aspose.Cells 操作类

    Aspose.Cell.dll - 基础dll【文件见文章底部源代码内】

    License.lic - Aspose.Cells 破解证书【文件见文章底部源代码内】

      ps:由于 Aspose.Cells 插件 是收费插件,需要在使用插件前,设置一下许可证,否则在生成的Excel 中 会出现一个名叫 Evaluation Warning 的 Sheet.如图所示:

    


二:Aspose.Cells 操作

  2.1 引入 Aspose.Cell.dll 

  

  2.2 设置 Aspose.Cell.dll 证书 License.lic

    2.2.1 设置证书。我一般都写在生成Excel类的构造函数中了。文件路径要和证书的位置保持一致

Excel.License l = new Excel.License();
l.SetLicense("Aid/License.lic");  
    2.2.2 修改证书属性。在解决方案中,右击 License.lic选择属性,修改 Copy to Ouput Directory 属性为 Copy always

    

  2.3 打开现有Execl 模板


//模板文件路径
string Template_File_Path = @".\Template\Template.xlsx";

//  打开 Excel 模板
Workbook CurrentWorkbook = File.Exists(Template_File_Path) ? new Workbook(Template_File_Path) : new Workbook();

//  打开第一个sheet
Worksheet DetailSheet = CurrentWorkbook.Worksheets[0];  

  2.4 写入数据

    2.4.1 填写数据到指定单元格

 // 比如要在 A1 位置写入 Demo这个值

Cell itemCell = DetailSheet.Cells["A1"];

itemCell.PutValue("Demo");  
    2.4.2 把DataTable写入到Excel

//  获取 Table 数据
DataTable dt = GetData();
            
//  写入数据的起始位置
string cell_start_region = "C1";
//  获得开始位置的行号                    
int startRow = DetailSheet.Cells[cell_start_region].Row;
//  获得开始位置的列号  
int startColumn = DetailSheet.Cells[cell_start_region].Column;  

//  写入Excel。参数说明,直接查阅文章底部文档链接
DetailSheet.Cells.ImportDataTable(dt, false, startRow, startColumn, true, true);  

  2.5 保存Excel


//  设置执行公式计算 - 如果代码中用到公式,需要设置计算公式,导出的报表中,公式才会自动计算
CurrentWorkbook.CalculateFormula(true);

//  生成的文件名称
string ReportFileName = string.Format("Excel_{0}.xlsx", DateTime.Now.ToString("yyyy-MM-dd"));

//  保存文件
CurrentWorkbook.Save(@".\Excel\" + ReportFileName, SaveFormat.Xlsx);  

   

   

   
/新建工作簿
Workbook workbook = new Workbook(); //工作簿
Worksheet sheet = workbook.Worksheets[0]; //工作表
Cells cells = sheet.Cells;//单元格
 
sheet.Protect(ProtectionType.All, "123123", "");//保护工作表
sheet.Protection.IsSelectingLockedCellsAllowed = false;//设置只能选择解锁单元格
sheet.Protection.IsFormattingColumnsAllowed = true;//设置可以调整列
sheet.Protection.IsFormattingRowsAllowed = true;//设置可以调整行
 
Style style1 = workbook.Styles[workbook.Styles.Add()];//新增样式
style1.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style1.Font.Name = "宋体";//文字字体
style1.Font.Size = 22;//文字大小
style1.IsLocked = false;//单元格解锁
style1.Font.IsBold = true;//粗体
style1.ForegroundColor = Color.FromArgb(0xaa, 0xcc, 0xbb);//设置背景色
style1.Pattern = BackgroundType.Solid; //设置背景样式
style1.IsTextWrapped = true;//单元格内容自动换行
style1.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线
style1.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线
style1.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线

style1.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线

cells.Merge(0, 0, 1, 5);//合并单元格 cells[0, 0].PutValue("内容");//填写内容 cells[0, 0].SetStyle(style1);//给单元格关联样式   cells.SetRowHeight(0, 20);//设置行高 cells.SetColumnWidth(1, 30);//设置列宽 cells[1, 0].Formula = "=AVERAGE(B1:E1)";//给单元格设置计算公式

//从Cells[0,0]开始创建一个2行3列的Range Range range = ws.Cells.CreateRange(0, 0, 2, 3); Cell cell = range[0, 0]; cell.Style.Font = 9; range.Style = style; range.Merge();

注意Range不能直接设置Style.必须先定义style再将style赋给Style.其他设置和Cell基本一致. Range的Style会覆盖Cell定义的Style.另外必须先赋值再传Style.否则可能不生效.

sheet.Cells[0,0].PutValue(1); sheet.Cells[1,0].PutValue(20); sheet.Cells[2,0].Formula="SUM(A1:B1)"; sheet.CalculateFormula(true); Save Excel文件的时候必须调用CalculateFormula方法计算结果.

 

//********************************************************************************

1.创建execl(不需要服务器或者客户端安装office)

public void DCExexl(DataTable dt) {   Workbook wb = new Workbook();   Worksheet ws = wb.Worksheets[0];   Cells cell = ws.Cells;

 

 cell[0, 0].PutValue("ID");//添加数据到第0行和第0列

 cell.SetRowHeight(0, 0);设置行高

 Aspose.Cells.Style style1 = wb.Styles[wb.Styles.Add()];  style1.HorizontalAlignment = TextAlignmentType.Right;//文字居中

 style1.Font.Name = "宋体";  style1.Font.IsBold = true;//设置粗体  style1.Font.Size = 12;//设置字体大小

 cell[0, 0].SetStyle(style1);

 cell.SetColumnWidth(0, 10.00);//列宽

Range range = cell.CreateRange(0, 0, 1, 1);//合并单元格 range.Merge();

 string FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";  HttpResponse response = Page.Response;  response.Buffer = true;  response.Charset = "utf-8";  response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);  response.ContentEncoding = System.Text.Encoding.UTF8;  response.ContentType = "application/ms-excel";  response.BinaryWrite(wb.SaveToStream().ToArray());  response.End();

}

2.读取execl

public DataTable GetDataTable(string path) {  Workbook workbook = new Workbook();  workbook.Open(path);  Cells cells = workbook.Worksheets[0].Cells;  DataTable dt = new DataTable();  bool d = true;//防止表头重复加载  for (int i = 0; i < cells.MaxDataRow + 1; i++)  {   DataRow row = dt.NewRow();   for (int j = 0; j < cells.MaxDataColumn + 1; j++)    {     if (d) {      dt.Columns.Add(cells[0, j].StringValue.Trim());     }      row[j] = cells[i + 1, j].StringValue.Trim();  }   dt.Rows.Add(row);   d = false; } return dt; }

 

//*******************************************************************************

读Excel

[csharp] view plain copy print ?
  1.  Aspose.Cells.Workbook wk = new Aspose.Cells.Workbook();  
  2.  wk.Open(file);//打开Excel文档  
  3.  Worksheet sht = wk.Worksheets[0];//查看文档的sheet0内容  
  4.  Cells cells = sht.Cells;//获取sheet0的所有单元格  
  5. if (sht==null)  
  6. {  
  7.     return false;  
  8. }  
  9. int rowCount = cells.MaxDataRow+1;//当Excel没有一行数据时,读取到的cells.MaxDataRow=-1,当有一行数据时cells.MaxDataRow=0     MaxDataRow:包含数据的单元格的最大行索引  
  10.   
  11. int cellCount = cells.MaxDataColumn + 1;//当Excel没有一行数据时,读取到的cells.MaxDataRow=-1,当有一行数据时cells.MaxDataRow=0     MaxDataRow:包含数据的单元格的最大列索引  
  12. string title = cells[j, k].Value.ToString();//获取第j行k列单元格的内容  
 Aspose.Cells.Workbook wk = new Aspose.Cells.Workbook();
 wk.Open(file);//打开Excel文档
 Worksheet sht = wk.Worksheets[0];//查看文档的sheet0内容
 Cells cells = sht.Cells;//获取sheet0的所有单元格
if (sht==null)
{
    return false;
}
int rowCount = cells.MaxDataRow+1;//当Excel没有一行数据时,读取到的cells.MaxDataRow=-1,当有一行数据时cells.MaxDataRow=0     MaxDataRow:包含数据的单元格的最大行索引

int cellCount = cells.MaxDataColumn + 1;//当Excel没有一行数据时,读取到的cells.MaxDataRow=-1,当有一行数据时cells.MaxDataRow=0     MaxDataRow:包含数据的单元格的最大列索引
string title = cells[j, k].Value.ToString();//获取第j行k列单元格的内容

 

写Excel

[csharp] view plain copy print ?
  1. int _BugNoColumn = cells.MaxDataColumn+1;;//获取最后单元格的内容  
  2. cells.InsertColumn(_BugNoColumn);//在最后单元格的后一列插入一列  
  3. Cell cell = cells[0, _BugNoColumn];//获取插入的那一列的第一行的单元格  
  4. cell.PutValue("abc");//设置单元格的内容为"abc"  

//******************************************************************************************

 

 

上传 

Workbook Workbook workBook = new Workbook(); 

属性: 

 

 名称 值类型  说明 
 Colors  Color[]  获取或设置Excel颜色 
 ConvertNumericData  bool  获取或设置是否将字符串转换至数字数据 
 默认值为 true 
 DataSorter  DataSorter  获取或设置数据分级 
 Date1904  bool  
 DefaultStyle  Aspose.Cells.Style  获取或设置工作簿默认样式 
 HasMacro  bool  获取工作簿是否包含宏观调控或宏 
 IsHScrollBarVisible  bool  获取或设置左部滚动条(控制行) 
  默认值为true 
 IsProtected  bool  获取工作簿保护状态 
 IsVScrollBarVisible  bool  获取或设置底部滚动条(控制列) 
  默认值为true 
  Language   CountryCode --枚举类型  获取或设置语言 
 默认为当前计算机区域 
 Password  string  获取或设置工作簿密码 
 ReCalcOnOpen  bool  获取或设置是否重新计算所有打开文件的公式 
 Region  CountryCode --枚举类型  获取或设置工作簿区域(指当前使用者区域) 
  默认为当前计算机区域 
 Shared  bool  获取或设置当前工作簿是否共享 
 默认为false 
 ShowTabs  bool  获取或设置是否显示标签(工作表标签) 
  默认为true 
 Styles  Styles  样式集合 
 Worksheets  Worksheet  

 

事件: 

 

 CalculateFormula(bool ignoreError 
 ,ICustomFunction customFunction) +3 
 void  计算公式 
 ChangePalette(Color color,int index)  void  设置当前颜色在调色版中显示顺序 
 Combine(Workbook secondWorkbook)  void  联合工作簿,将secondWorkbook 工作簿中workSheet追加到当前工作簿中 
 Copy(Workbook source)  void  拷贝工作簿到当前工作簿 
 Decrypt(string password)  void  解除工作簿密码 
 IsColorInPalette(Color color)  bool  将color加入到当前Excel调色版 
 LoadData(string fileName)   LoadData(System.IO.Stream stream)  void  加载Excel到当前Workbook中 
 Open(string fileName, 
 FileFormatType.Default, 
 string password ); +8 
 void  打开Excel文件 
 Protect(ProtectionType.All, 
 string password); 
 void  写保护,并设置取消工作簿保护密码 
 RemoveExternalLinks()  void  移除外部链接 
 RemoveMacro()  void  移除宏 
 Replace (string PlaceHolder, 
 string newValue); +8 
 void  工作簿中类型和值完全符合的单元格,将其替换为新值或对象 
 Save(Server.UrlEncode("测试.xls"), 
  FileFormatType.Default, 
 SaveType.OpenInExcel, Response);+8 
 Void  保存工作簿 
 SaveToStream()  System.
 
 将工作簿写入内存流中 
 Unprotect(string password);  Void  取消工作簿保护状态 
 ValidateFormula(string formula)  bool  验证公式 

 

-----------

using System;
using System.Collections.Generic;
using System.Text;
using Aspose.Cells;
using System.Data;

namespace CRM.Common
{
    public class AsposeExcel
    {
        private string outFileName = "";
        private Workbook book = null;
        private Worksheet sheet = null;
        private log4net.ILog log = log4net.LogManager.GetLogger(typeof(AsposeExcel));

        public AsposeExcel(string outfilename,string tempfilename)
        {
            outFileName = outfilename;
            book = new Workbook();
            book.Open(tempfilename);
            sheet = book.Worksheets[0];
        }

        private void AddTitle(string title, int columnCount)
        {
            sheet.Cells.Merge(0, 0, 1, columnCount);
            sheet.Cells.Merge(1, 0, 1, columnCount);

            Cell cell1 = sheet.Cells[0, 0];
            cell1.PutValue(title);
            cell1.Style.HorizontalAlignment = TextAlignmentType.Center;
            cell1.Style.Font.Name = "黑体";
            cell1.Style.Font.Size = 14;
            cell1.Style.Font.IsBold = true;

            Cell cell2 = sheet.Cells[1, 0];
            cell1.PutValue("查询时间:" + DateTime.Now.ToLocalTime());
            cell2.SetStyle(cell1.Style);
        }

        private void AddHeader(DataTable dt)
        {
            Cell cell = null;
            for (int col = 0; col < dt.Columns.Count; col++)
            {
                cell = sheet.Cells[0, col];
                cell.PutValue(dt.Columns[col].ColumnName);
                cell.Style.Font.IsBold = true;
            }
        }

        private void AddBody(DataTable dt)
        {
            for (int r = 0; r < dt.Rows.Count; r++)
            {
                for (int c = 0; c < dt.Columns.Count; c++)
                {
                    sheet.Cells[r + 3, c].PutValue(dt.Rows[r][c].ToString());
                }
            }
        }

        public void DatatableToExcel(DataTable dt)
        {
            try
            {
                //sheet.Name = sheetName;
                
                //AddTitle(title, dt.Columns.Count);
                //AddHeader(dt);
                AddBody(dt);

                sheet.AutoFitColumns();
                //sheet.AutoFitRows();

                book.Save(outFileName);
            }
            catch (Exception e)
            {
                log.Error("导出Excel失败!" + e.Message);
                throw e;
            }
        }
    }
}


导入就不说了。导入为datetable之后就自己操作就OK。

 

//********************************************************************************

使用Aspose.Cells 设置Excel

 
步骤:
              1.WorkBookBase 继承自Aspose.Cells.Workbook,在WorkBookBase 中注册
              2.使用WorkBookBase 操作Excel
      /// <summary>
      /// 创建workBook许可
      /// </summary>
      /// <author>wxl</author>
      /// <date>2012-10-15</date>
      public class WorkBookBase : Aspose.Cells.Workbook
      {
              public WorkBookBase()
              {
                      Aspose.Cells.License license = new Aspose.Cells.License();

                      string strLic = @"<License>
                                                                  <Data>
                                                                      <SerialNumber>aed83727-21cc-4a91-bea4-2607bf991c21</SerialNumber>
                                                                      <EditionType>Enterprise</EditionType>
                                                                      <Products>
                                                                          <Product>Aspose.Total</Product>
                                                                      </Products>
                                                                  </Data>
                                                                  <Signature>CxoBmxzcdRLLiQi1kzt5oSbz 9GhuyHHOBgjTf5w/wJ1V+lzjBYi8o7PvqRwkdQo4tT4dk 3PIJPbH9w5Lszei1SV/smkK8SCjR8kIWgLbOUFBvhD1 Fn9KgDAQ8B11psxIWvepKidw 8ZmDmbk9kdJbVBOkuAESXDdt DEDZMB/zL7Y=</Signature>
                                                              </License>";

                      MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(strLic));
                      license.SetLicense(ms);
 
             
Workbook workbook = new Workbook(); //工作簿
Worksheet sheet = workbook.Worksheets[0]; //工作表
Cells cells = sheet.Cells;//单元格

sheet.Protect(ProtectionType.All, "123123", "");//保护工作表
sheet.Protection.IsSelectingLockedCellsAl lowed = false;//设置只能选择解锁单元格
sheet.Protection.IsFormattingColumnsAllow ed = true;//设置可以调整列
sheet.Protection.IsFormattingRowsAllowed = true;//设置可以调整行

Style style1 = workbook.Styles[workbook.Styles.Add()];//新增样式
style1.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style1.Font.Name = "宋体";//文字字体
style1.Font.Size = 12;//文字大小
style1.IsLocked = false;//单元格解锁
style1.Font.IsBold = true;//粗体
style1.ForegroundColor = Color.FromArgb(0x99, 0xcc, 0xff);//设置背景色
style1.Pattern = BackgroundType.Solid; //设置背景样式
style1.IsTextWrapped = true;//单元格内容自动换行
style1.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线
style1.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线
style1.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线
style1.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线
//设置单元格背景颜色
style1.ForegroundColor  =  System.Drawing.Color.FromArgb( 153 204 0 );
style1.Pattern 
=  BackgroundType.Solid;

cells.Merge(0, 0, 1, 5);//合并单元格
cells[0, 0].PutValue("内容");//填写内容
cells[0, 0].SetStyle(style1);//给单元格关联样式
//cells[0,0].Style=style1; //给单元格关联样式
                                             
cells.SetRowHeight(0, 38);//设置行高

cells.SetColumnWidth(1, 20);//设置列宽

  cells[1, 0].Formula = "=AVERAGE(B1:E1)";//给单元格设置计算公式

  System.IO.MemoryStream ms = workbook.SaveToStream();//生成数据流
  byte[] bt = ms.ToArray();

  workbook.Save(@"D:\test.xls");//保存到硬盘

 

//***********************************************************************************************

基于Aspose.Cells.dll 封装了对于导出的Excel的各种样式设置,内容填充操作,目前支持边框样式,颜色,字体,合并单元格等操作,简化Aspose.Cells.dll的使用

调用示例

        /// ---------->Clom Y
        /// |
        /// |
        /// |
        /// \/ Row X
        static void Main(string[] args)
        {
            object[] clom = { "列名1", "列名2", "列名3" };
            object[] row = { "行名1", "行名2", "行名3", "行名4" };
            String filename = "text.xlsx";

            //列标题样式
            CellStyle Styleclom = new CellStyle();
            Styleclom.AllBorder = Aspose.Cells.CellBorderType.Thin;
            Styleclom.ForegroundColor = Color.Yellow;
            Styleclom.IsBold = true;
            //行标题样式
            CellStyle Stylerow = new CellStyle();
            Stylerow.AllBorder = Aspose.Cells.CellBorderType.Thin;
            Stylerow.ForegroundColor = Color.ForestGreen;
            Stylerow.IsBold = true;
            //单元格样式
            CellStyle Stylebody = new CellStyle();
            Stylebody.AllBorder = Aspose.Cells.CellBorderType.Medium;
            Stylebody.ForegroundColor = Color.LightBlue;
            Stylebody.IsBold = true;
            Stylebody.IsItalic = true;

            //将样式和内容填充到模板中
            ExcelFormat eformat = new ExcelFormat();
            eformat.SavePath = filename;
            eformat.ColumnsSize = 20;
            eformat.RowsSize = 20;
            //直接插入标题
            //eformat.InsertTitle(clom.ToList(), Styleclom,  ExcelFormat.TitleType.列标题);
            //eformat.InsertTitle(row.ToList(), Stylerow, ExcelFormat.TitleType.行标题);

            eformat.InsertCellRow(new CellRow(1, 4, 0, clom.ToList()), Stylerow);
            eformat.InsertCellColm(new CellColm(1, 5, 0, row.ToList()), Styleclom);

            for (int i = 0; i < clom.Length; i++)
            {
                for (int j = 0; j < row.Length; j++)
                {
                    SCell scell = new SCell();
                    scell.Txt_Obj = Convert.ToString(row[j]) + Convert.ToString(row[i]);
                    scell.X = j + 1;
                    scell.Y = i + 1;
                    scell.CStyle = Stylebody;
                    eformat.SCells.Add(scell);
                }
            }
            //向Excel中写入数据
            ExcelMethod.InsertData(eformat, true);

            Console.WriteLine("完毕");
            Console.ReadLine();
        }

导出例子
这里写图片描述

GitHub地址

2017/11/15更新后 不再对所谓的标题行标题列作区分(在ExcelFormat对象中只保留SCells属性,即可配置样式的单元格集合。除此之外,新增了数据行,数据列,数据区块的概念,方便一组规则且具有相同样式的数据区块插入。为确保配置样式和插入的灵活性,所有的单元格最终汇总到SCells中等待写入)

//********************************************************************************

Aspose.cell.dll的使用,导excel表

 


using System;
using System.Web;
using EF;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq; using System.IO; using Aspose.Cells; //using Microsoft.Office.Interop.Excel; //using System.Reflection; public class ToOverTimexls : IHttpHandler {     public void ProcessRequest(HttpContext context)     {         int oname = 0, years = 0, month = 0;         if (context.Request["name"] != null)         {             oname = int.Parse(context.Request["name"]);         }         if (context.Request["years"] != null)         {             years = int.Parse(context.Request["years"]);         }         if (context.Request["month"] != null)         {             month = int.Parse(context.Request["month"]);         }         //oname = 1; years = 2016; month = 1;         using (WorkRecordEntities db = new WorkRecordEntities())         {             IList<OverTime> list = db.OverTime.Where(o => o.StaffID == oname && o.StartTime.Year == years && o.StartTime.Month == month).ToList();             var name = db.Staff.Where(o => o.StaffID == oname).FirstOrDefault().FullName;             //建立一个Excel进程 Application             // string SavaFilesPath = System.Configuration.ConfigurationManager.AppSettings["DownLoad"] + Guid.NewGuid() + ".xls";             string SavaFilesPath = context.Server.MapPath("~/Download") + "\\" + Guid.NewGuid() + ".xls";             // Application excelApplication = new Application();             // //默认值为 True。如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,请将本属性设置为 False;这样每次出现需用户应答的消息时,Microsoft Excel             // // 将选择默认应答。             // //如果将该属性设置为 False,则在代码运行结束后,Micorosoft Excel 将该属性设置为 True,除非正运行交叉处理代码。             // //如果使用工作簿的 SaveAs 方法覆盖现有文件,“覆盖”警告默认为“No”,当 DisplayAlerts 属性值设置为 True 时,Excel 选择“Yes”。             // excelApplication.DisplayAlerts = false;             // //  建立或打开一个 Workbook对象生成新Workbook             // Workbook workbook = excelApplication.Workbooks.Add(Missing.Value);             // //int x = 2;             // Worksheet lastWorksheet = (Worksheet)workbook.Worksheets.get_Item(workbook.Worksheets.Count);             // Worksheet newSheet = (Worksheet)workbook.Worksheets.Add(Type.Missing, lastWorksheet, Type.Missing, Type.Missing);             // //表头             // newSheet.Cells[4, 1] = "No.(序号)";             // newSheet.Cells[4, 2] = "Date(日期)";             // newSheet.Cells[4, 3] = "Mon.~Sun.";             // newSheet.Cells[4, 4] = "From(开始)";             // newSheet.Cells[4, 5] = "To(止)";             // newSheet.Cells[4, 6] = "OT Hrs.(时间)";             // newSheet.Cells[4, 7] = "Evnt(加班事由)";             // newSheet.Cells[4, 8] = "Approve(审批)";             // newSheet.Cells[3, 4] = "To(加班时间)";             // newSheet.Cells[1,4]="加班申请表";             // newSheet.Cells[2,1]="部门:后台";              newSheet.Cells[2, 2] = "后台";             // newSheet.Cells[2, 6] = "姓名:"+name;             // //newSheet.Cells[2, 7] = name;             // newSheet.get_Range("A1", "H1").Merge(newSheet.get_Range("A1", "H1").MergeCells);             // newSheet.get_Range("A2", "D2").Merge(newSheet.get_Range("A2", "D2").MergeCells);             // newSheet.get_Range("F2", "H2").Merge(newSheet.get_Range("F2", "H2").MergeCells);             // newSheet.get_Range("A3", "A4").Merge(newSheet.get_Range("A3", "A4").MergeCells);             // newSheet.get_Range("B3", "B4").Merge(newSheet.get_Range("B3", "B4").MergeCells);             // newSheet.get_Range("C3", "C4").Merge(newSheet.get_Range("C3", "C4").MergeCells);             // newSheet.get_Range("D3", "F3").Merge(newSheet.get_Range("D3", "F3").MergeCells);             // newSheet.get_Range("G3", "G4").Merge(newSheet.get_Range("G3", "G4").MergeCells);             // newSheet.get_Range("H3", "H4").Merge(newSheet.get_Range("H3", "H4").MergeCells);             // newSheet.get_Range("A3", "H3").Interior.ColorIndex = 15;             // newSheet.get_Range("A4", "H4").Interior.ColorIndex = 15;             // Range range1 = newSheet.get_Range("A1", "H1");             // range1.HorizontalAlignment = XlHAlign.xlHAlignCenter;             // range1.WrapText = true;             // Range range = newSheet.get_Range("A3", "H4");             // range.HorizontalAlignment = XlHAlign.xlHAlignCenter;             // range.Font.Size = 10;             // range.Borders.LineStyle = 1;             // //设置边框                      range.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());                     // range.Borders.get_Item(XlBordersIndex.xlEdgeBottom).Weight = XlBorderWeight.xlMedium;             // range.WrapText = true;              var x = 3;             // var x = 5;             // for (var i = 0; i < list.Count; i++)             // {             //     newSheet.Cells[x + i, 1] = i + 1;             //     newSheet.Cells[x + i, 2] = list[i].StartTime.Month + "月" + list[i].StartTime.Day + "日";             //     newSheet.Cells[x + i, 3] = GetWeekCHA((list[i].StartTime.DayOfWeek).ToString());             //     newSheet.Cells[x + i, 4] = list[i].StartTime.ToString("yyyy/MM/dd HH:mm:ss");             //     newSheet.Cells[x + i, 5] = list[i].EndTime.ToString("yyyy/MM/dd HH:mm:ss");             //     int ts = (list[i].EndTime - list[i].StartTime).Hours;             //     newSheet.Cells[x + i, 6] = ts;             //     newSheet.Cells[x + i, 7] = list[i].Description;             //     newSheet.Cells[x + i, 8] = "";             // }             // newSheet.Cells.Columns.AutoFit();             // //删除原来的空Sheet             // ((Worksheet)workbook.Worksheets.get_Item(1)).Delete();             // ((Worksheet)workbook.Worksheets.get_Item(1)).Delete();             // ((Worksheet)workbook.Worksheets.get_Item(1)).Delete();             // //设置默认选中是第一个Sheet 类似于Select();             // ((Worksheet)workbook.Worksheets.get_Item(1)).Activate();             // try             // {             //     workbook.Close(true, SavaFilesPath, Missing.Value);             // }             // catch (Exception e)             // {             //     throw e;             // }             // UploadExcel(SavaFilesPath, true);             // excelApplication.Quit();             Workbook workbook = new Workbook();             Worksheet worksheet = workbook.Worksheets[0];             Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式                styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中             worksheet.PageSetup.Orientation = PageOrientationType.Landscape;//横向打印             worksheet.PageSetup.Zoom = 100;//以100%的缩放模式打开             worksheet.PageSetup.PaperSize = PaperSizeType.PaperA4;             Range range; Cell cell;             range = worksheet.Cells.CreateRange(0, 0, 1, 8);             range.Merge();             range.RowHeight = 20;             range.ColumnWidth = 15;             cell = range[0, 0];             cell.PutValue("加班申请表");             cell.SetStyle(styleTitle);             range = worksheet.Cells.CreateRange(1, 0, 1, 2);             range.Merge();             range.RowHeight = 15;             cell = range[0, 0];             cell.PutValue("部门:后台");             range = worksheet.Cells.CreateRange(1, 4, 1, 2);             range.Merge();             range.RowHeight = 15;             cell = range[0, 0];             cell.PutValue("姓名:" + name);             //range = worksheet.Cells.CreateRange(1, 5, 1, 1);             //range.Merge();             //range.RowHeight = 15;             //cell = range[0, 0];             //cell.PutValue("方亭");             range = worksheet.Cells.CreateRange(2, 0, 2, 1);             range.Merge();             cell = range[0, 0];             cell.PutValue("No.(序号)");             cell.SetStyle(styleTitle);             range = worksheet.Cells.CreateRange(2, 1, 2, 1);             range.Merge();             cell = range[0, 0];             cell.PutValue("Date(日期)");             range = worksheet.Cells.CreateRange(2, 2, 2, 1);             range.Merge();                          cell = range[0, 0];             cell.PutValue("Mon.~Sun.");             cell.SetStyle(styleTitle);             range = worksheet.Cells.CreateRange(2, 3, 1, 3);             range.Merge();             range.ColumnWidth = 20;                          cell = range[0, 0];             cell.PutValue("To(加班时间)");             cell.SetStyle(styleTitle);             cell = worksheet.Cells[3, 3];             cell.PutValue("From(开始)");             cell.SetStyle(styleTitle);             cell = worksheet.Cells[3, 4];             cell.PutValue("To(止)");             cell.SetStyle(styleTitle);             cell = worksheet.Cells[3, 5];             cell.PutValue("OT Hrs.(时间)");             cell.SetStyle(styleTitle);             range = worksheet.Cells.CreateRange(2, 6, 2, 1);             range.Merge();             cell = range[0, 0];             cell.PutValue("Evnt(加班事由)");             cell.SetStyle(styleTitle);             range = worksheet.Cells.CreateRange(2, 7, 2, 1);             range.Merge();             cell = range[0, 0];             cell.PutValue("Approve(审批)");             cell.SetStyle(styleTitle);             for (var i = 0; i < list.Count; i++)             {                 //newSheet.Cells[x + i, 1] = i + 1;                 //newSheet.Cells[x + i, 2] = list[i].StartTime.Month + "月" + list[i].StartTime.Day + "日";                 //newSheet.Cells[x + i, 3] = GetWeekCHA((list[i].StartTime.DayOfWeek).ToString());                 //newSheet.Cells[x + i, 4] = list[i].StartTime.ToString("yyyy/MM/dd HH:mm:ss");                 //newSheet.Cells[x + i, 5] = list[i].EndTime.ToString("yyyy/MM/dd HH:mm:ss");                 //int ts = (list[i].EndTime - list[i].StartTime).Hours;                 //newSheet.Cells[x + i, 6] = ts;                 //newSheet.Cells[x + i, 7] = list[i].Description;                 //newSheet.Cells[x + i, 8] = "";                 cell = worksheet.Cells[4 + i, 0];                 cell.PutValue(i + 1);                 cell.SetStyle(styleTitle);                 cell = worksheet.Cells[4 + i, 1];                 cell.PutValue(list[i].StartTime.Month + "月" + list[i].StartTime.Day + "日");                 cell.SetStyle(styleTitle);                 cell = worksheet.Cells[4 + i, 2];                 cell.PutValue(GetWeekCHA((list[i].StartTime.DayOfWeek).ToString()));                 cell.SetStyle(styleTitle);                 cell = worksheet.Cells[4 + i, 3];                 cell.PutValue(list[i].StartTime.ToString("yyyy/MM/dd HH:mm:ss"));                 cell.SetStyle(styleTitle);                 cell = worksheet.Cells[4 + i, 4];                 cell.PutValue(list[i].EndTime.ToString("yyyy/MM/dd HH:mm:ss"));                 cell.SetStyle(styleTitle);                 int ts = (list[i].EndTime - list[i].StartTime).Hours;                 cell = worksheet.Cells[4 + i, 5];                 cell.PutValue(ts);                 cell.SetStyle(styleTitle);                 cell = worksheet.Cells[4 + i, 6];                 cell.PutValue(list[i].Description);                 cell.SetStyle(styleTitle);                 cell = worksheet.Cells[4 + i, 7];                 cell.PutValue("");                 cell.SetStyle(styleTitle);             }             workbook.Save(SavaFilesPath);             UploadExcel(SavaFilesPath, true);         }     }     ///   <summary>        ///   返回星期中文名        ///   </summary>        ///   <param   name="WeekENG">星期英文名</param>        ///   <returns></returns>        public string GetWeekCHA(string WeekENG)     {         string return_value = "";         switch (WeekENG)         {             case "Monday":                 return_value = "星期一";                 return return_value;             case "Tuesday":                 return_value = "星期二";                 return return_value;             case "Wednesday":                 return_value = "星期三";                 return return_value;             case "Thursday":                 return_value = "星期四";                 return return_value;             case "Friday":                 return_value = "星期五";                 return return_value;             case "Saturday":                 return_value = "星期六";                 return return_value;             case "Sunday":                 return_value = "星期日";                 return return_value;         }         return return_value;     }     /// <summary>     /// 提供下载     /// </summary>     /// <param name="path"></param>     /// <param name="page"  

   //下载Excel
            window.location.href = "/ashx/ToExcel.ashx?project=" + probject + "&years=" + years + "&month=" + month;  

  

 

//**************************************************************************************************

C# 读写Excel的一些方法,Aspose.Cells.dll

需求:现有2个Excel,一个7000,一个20W,7000在20W是完全存在的。现要分离20W的,拆分成19W3和7000。

条件:两个Excel都有“登录名”,然后用“登录名”去关联2个Excel

引用:Aspose.Cells.dll


public void Excel()
{ 
    //获取第一个Excel,20W
    string filePath = AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/") + "daochu/测试20W.xlsx";
    System.Data.DataTable table = GetTableFromExcel("sheet1", filePath);

    //克隆
    System.Data.DataTable table20W_new = table.Clone();
    System.Data.DataTable table7000_new = table.Clone();    

    //获取第二个Excel,7000
    string filePath_7000 = AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/") + "daochu/测试7000.xls";
    System.Data.DataTable table_7000 = GetTableFromExcel("sheet1", filePath_7000);

    //循环20W人中的挑出来
    for (int i = 0; i < table.Rows.Count; ++i)
    {
        //20W
        DataRow dateRow = table.Rows[i];
        string login_name = dateRow["登录名"].ToString();

        //7000
        DataRow[] drss = table_7000.Select("登录名 = '" + login_name + "'");
     
        if (drss.Length > 0)
        {
            table7000_new.ImportRow(dateRow);
        }
        else
        {
            table20W_new.ImportRow(dateRow);
        }
    }
    //导出Excel
    DataTableExport(table7000_new, AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/") + "daochu/7000.xlsx");
    DataTableExport(table20W_new, AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/") + "daochu/22W.xlsx");
}  

获取Excel内容,转成DataTable。


/// <summary>
/// 获取Excel内容。
/// </summary>
/// <param name="sheetName">工作表名称,例:sheet1</param>
/// <param name="filePath">Excel路径</param>
/// <returns></returns>
private DataTable GetTableFromExcel(string sheetName, string filePath)
{
    const string connStrTemplate = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=Yes;\"";
    DataTable dt = null;
    if (!System.IO.File.Exists(filePath))
    {
        // don't find file
        return null;
    }
    OleDbConnection conn = new OleDbConnection(string.Format(connStrTemplate, filePath));
    try
    {
        conn.Open();
        if (sheetName == null || sheetName.Trim().Length == 0)
        {
            DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();
        }
        else
        {
            sheetName += "$";
        }

        string strSQL = "Select * From [" + sheetName + "]";
        OleDbDataAdapter da = new OleDbDataAdapter(strSQL, conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        dt = ds.Tables[0];
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        conn.Close();
    }

    return dt;
}  

将DataTable的数据写进Excel里(用的Aspose.Cells.dll)


/// <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();
        Worksheet sheet = book.Worksheets[0];
        Cells cells = sheet.Cells;

        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);
        }
        //生成数据行 
        for (int i = 0; i < Rownum; i++)
        {
            for (int k = 0; k < Colnum; k++)
            {
                cells[1 + i, k].PutValue(data.Rows[i][k].ToString());
            }
        }
        book.Save(filepath);
        GC.Collect();
    }
    catch (Exception e)
    {
        logger.Error("生成excel出错:" + e.Message);
    }
}  

将List的数据写进Excel里(用的Aspose.Cells.dll)


/// <summary>
/// 导出excel  
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data">Ilist集合</param>
/// <param name="filepath">保存的地址</param>
public static void Export<T>(IList<T> data, string filepath)
{
    try
    {
        Workbook workbook = new Workbook();
        Worksheet sheet = (Worksheet)workbook.Worksheets[0];

        PropertyInfo[] ps = typeof(T).GetProperties();
        var colIndex = "A";
        foreach (var p in ps)
        {
            //    sheet.Cells[colIndex + 1].PutValue(p.Name);//设置表头名称  要求表头为中文所以不用 p.name 为字段名称 可在list第一条数据为表头名称
            int i = 1;
            foreach (var d in data)
            {
                sheet.Cells[colIndex + i].PutValue(p.GetValue(d, null));
                i++;
            }
            colIndex = getxls_top(colIndex); //((char)(colIndex[0] + 1)).ToString();//表头  A1/A2/
        }
        //workbook.Shared = true;
        workbook.Save(filepath);
        GC.Collect();
    }
    catch (Exception e)
    {
        logger.Error("生成excel出错:" + e.Message);
    }
}
/// <summary>
/// 生成新的对应的列  A-Z  AA-ZZ
/// </summary>
/// <param name="top">当前列</param>
/// <returns></returns>
private static string getxls_top(string top)
{
    char[] toplist = top.ToArray();
    var itemtop = top.Last();
    string topstr = string.Empty;
    if ((char)itemtop == 90)//最后一个是Z
    {
        if (toplist.Count() == 1)
        {
            topstr = "AA";
        }
        else
        {
            toplist[0] = (char)(toplist[0] + 1);
            toplist[toplist.Count() - 1] = 'A';
            foreach (var item in toplist)
            {
                topstr += item.ToString();
            }
        }
    }
    else//最后一个不是Z  包括top为两个字符
    {
        itemtop = (char)(itemtop + 1);
        toplist[toplist.Count() - 1] = itemtop;

        foreach (var item in toplist)
        {
            topstr += item.ToString();
        }
    }
    return topstr;
}  

将DataTable的数据写进Excel里(用的Microsoft.Office.Interop.Excel.dll)(此方法在大量数据的时候很慢,例如22W条数据,建议使用Aspose.Cells.dll,速度快很多)


/// <summary>
/// 将DataTable的数据写进Excel里
/// </summary>
/// <param name="tmpDataTable">DataTable数据</param>
/// <param name="strFileName">Excel路径</param>
public static void DataTabletoExcel(System.Data.DataTable tmpDataTable, string strFileName)
{
    if (tmpDataTable == null)
    {
        return;
    }
    int rowNum = tmpDataTable.Rows.Count;
    int columnNum = tmpDataTable.Columns.Count;
    int rowIndex = 1;
    int columnIndex = 0;

    //需要引用Microsoft.Office.Interop.Excel.dll
    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
    xlApp.DefaultFilePath = "";
    xlApp.DisplayAlerts = true;
    xlApp.SheetsInNewWorkbook = 1;
    Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);

    //将DataTable的列名导入Excel表第一行
    foreach (DataColumn dc in tmpDataTable.Columns)
    {
        columnIndex++;
        xlApp.Cells[rowIndex, columnIndex] = dc.ColumnName;
    }

    //将DataTable中的数据导入Excel中
    for (int i = 0; i < rowNum; i++)
    {
        rowIndex++;
        columnIndex = 0;
        for (int j = 0; j < columnNum; j++)
        {
            columnIndex++;
            xlApp.Cells[rowIndex, columnIndex] = tmpDataTable.Rows[i][j].ToString();
        }
    }

    //xlBook.SaveCopyAs(HttpUtility.UrlDecode(strFileName, System.Text.Encoding.UTF8));
    xlBook.SaveCopyAs(strFileName);
}  

原生的DataTable生成Excel(无需引用第三方dll)


/// <summary>
/// 将DataTable的数据写进Excel里
/// </summary>
/// <param name="tdKeChengZhuanJiaTongJi">DataTable</param>
/// <param name="sheet">sheet自定义名称</param>
/// <param name="fileName">Excel路径</param>
public static void DataTabletoExcel(DataTable dt, string sheet, string fileName)
{
    String sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0 Xml;\"";
    //string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HDR=Yes;'";
    //String sConnectionString = "Provider=Microsoft.ACE.OLEDB.14.0;Data Source=" + fileName + ";Extended Properties=\"Excel 14.0 Xml;\"";
    //String sConnectionString = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" + fileName + ";Extended Properties=\"Excel 16.0 Xml;HDR=YES;\"";

    OleDbConnection cn = new OleDbConnection(sConnectionString);

    int rowNum = dt.Rows.Count;//获取行数
    int colNum = dt.Columns.Count;//获取列数
    string sqlText = "";//带类型的列名
    string sqlValues = "";//
    string colCaption = "";//列名
    for (int i = 0; i < colNum; i++)
    {
        if (i != 0)
        {
            sqlText += " , ";
            colCaption += " , ";
        }
        sqlText += "[" + dt.Columns[i].Caption.ToString() + "] VarChar";//生成带VarChar列的标题
        colCaption += "[" + dt.Columns[i].Caption.ToString() + "]";//生成列的标题
    }
    try
    {
        //打开连接
        cn.Open();
        string sqlCreate = "CREATE TABLE [" + sheet.ToString() + "] (" + sqlText + ")";
        OleDbCommand cmd = new OleDbCommand(sqlCreate, cn);
        //创建Excel文件
        cmd.ExecuteNonQuery();
        for (int srow = 0; srow < rowNum; srow++)
        {
            sqlValues = "";
            for (int col = 0; col < colNum; col++)
            {
                if (col != 0)
                {
                    sqlValues += " , ";
                }
                sqlValues += "'" + dt.Rows[srow][col].ToString() + "'";//拼接Value语句
            }
            String queryString = "INSERT INTO [" + sheet.ToString() + "] (" + colCaption + ") VALUES (" + sqlValues + ")";
            cmd.CommandText = queryString;
            cmd.ExecuteNonQuery();//插入数据
        }
    }
    catch
    {
    //生成日志
    }
    finally
    {
        cn.Close();
    }
}  

 

 

//***************************************************************************************************

C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]

[csharp] view plain copy print ?
  1. 1.添加引用:  
  2.   
  3. Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载。关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的说。这里你暂时也可不理会它。)  
  4. 即使没有安装office也能用噢,这是一个好强的大工具。  
  5. 2.编写Excel操作类  
  6.   
  7. using System;  
  8. using System.Collections.Generic;  
  9. using System.Text;  
  10. using Aspose.Cells;  
  11. using System.Data;  
  12. public class AsposeExcel  
  13. {  
  14.     private string outFileName = "";  
  15.     private string fullFilename = "";  
  16.     private Workbook book = null;  
  17.     private Worksheet sheet = null;  
  18.     public AsposeExcel(string outfilename, string tempfilename) //导出构造数  
  19.     {  
  20.         outFileName = outfilename;  
  21.         book = new Workbook();  
  22.         // book.Open(tempfilename);这里我们暂时不用模板  
  23.         sheet = book.Worksheets[0];  
  24.     }  
  25.     public AsposeExcel(string fullfilename) //导入构造数  
  26.     {  
  27.         fullFilename = fullfilename;  
  28.         // book = new Workbook();  
  29.         // book.Open(tempfilename);  
  30.         // sheet = book.Worksheets[0];  
  31.     }  
  32.     private void AddTitle(string title, int columnCount)  
  33.     {  
  34.         sheet.Cells.Merge(0, 0, 1, columnCount);  
  35.         sheet.Cells.Merge(1, 0, 1, columnCount);  
  36.         Cell cell1 = sheet.Cells[0, 0];  
  37.         cell1.PutValue(title);  
  38.         cell1.Style.HorizontalAlignment = TextAlignmentType.Center;  
  39.         cell1.Style.Font.Name = "黑体";  
  40.         cell1.Style.Font.Size = 14;  
  41.         cell1.Style.Font.IsBold = true;  
  42.         Cell cell2 = sheet.Cells[1, 0];  
  43.         cell1.PutValue("查询时间:" + DateTime.Now.ToLocalTime());  
  44.         cell2.SetStyle(cell1.Style);  
  45.     }  
  46.     private void AddHeader(DataTable dt)  
  47.     {  
  48.         Cell cell = null;  
  49.         for (int col = 0; col < dt.Columns.Count; col++)  
  50.         {  
  51.             cell = sheet.Cells[0, col];  
  52.             cell.PutValue(dt.Columns[col].ColumnName);  
  53.             cell.Style.Font.IsBold = true;  
  54.         }  
  55.     }  
  56.     private void AddBody(DataTable dt)  
  57.     {  
  58.         for (int r = 0; r < dt.Rows.Count; r++)  
  59.         {  
  60.             for (int c = 0; c < dt.Columns.Count; c++)  
  61.             {  
  62.                 sheet.Cells[r + 1, c].PutValue(dt.Rows[R]­[c].ToString());  
  63.             }  
  64.         }  
  65.     }  
  66.     //导出------------下一篇会用到这个方法  
  67.     public Boolean DatatableToExcel(DataTable dt)  
  68.     {  
  69.         Boolean yn = false;  
  70.         try  
  71.         {  
  72.             //sheet.Name = sheetName;  
  73.             //AddTitle(title, dt.Columns.Count);  
  74.             //AddHeader(dt);  
  75.             AddBody(dt);  
  76.             sheet.AutoFitColumns();  
  77.             //sheet.AutoFitRows();  
  78.             book.Save(outFileName);  
  79.             yn = true;  
  80.             return yn;  
  81.         }  
  82.         catch (Exception e)  
  83.         {  
  84.             return yn;  
  85.             // throw e;  
  86.         }  
  87.     }  
  88.     public DataTable ExcelToDatatalbe()//导入  
  89.     {  
  90.         Workbook book = new Workbook();  
  91.         book.Open(fullFilename);  
  92.         Worksheet sheet = book.Worksheets[0];  
  93.         Cells cells = sheet.Cells;  
  94.         //获取excel中的数据保存到一个datatable中  
  95.         DataTable dt_Import = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, false);  
  96.         // dt_Import.  
  97.         return dt_Import;  
  98.     }  
  99. }[/R]  
  100.   
  101. 3. Word导出  
  102. //设置文件类型  
  103. // saveFileDialog为一个对话框控件  
  104. //如果没有人工具栏中拉,  
  105. //可以:SaveFileDialog saveFileDialog1=new SaveFileDialog();  
  106. saveFileDialog1.Filter = "导出Excel (*.xls)|*.xls|Word (*.doc)|*.doc";  
  107. saveFileDialog1.FilterIndex = 1;  
  108. saveFileDialog1.RestoreDirectory = true;  
  109. saveFileDialog1.CreatePrompt = true;  
  110. saveFileDialog1.Title = "导出文件保存路径";  
  111. //saveFileDialog1.ShowDialog();  
  112. //string strName = saveFileDialog1.FileName;  
  113. //设置默认文件类型显示顺序  
  114. //saveFileDialog1.FilterIndex = 2;  
  115. //保存对话框是否记忆上次打开的目录  
  116. saveFileDialog1.RestoreDirectory = true;  
  117. //点了保存按钮进入  
  118. if (saveFileDialog1.ShowDialog() == DialogResult.OK)  
  119. {  
  120.     //获得文件路径  
  121.     string localFilePath = saveFileDialog1.FileName.ToString();  
  122.     //获取文件名,不带路径  
  123.     string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);  
  124.     //获取文件路径,不带文件名  
  125.     string FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf("\\"));  
  126.     //给文件名前加上时间  
  127.     string newFileName = DateTime.Now.ToString("yyyyMMdd") + fileNameExt;  
  128.     //在文件名里加字符  
  129.     //saveFileDialog1.FileName.Insert(1,"dameng");  
  130.     saveFileDialog1.FileName = FilePath + "\\" + newFileName;  
  131.     System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile();//输出文件  
  132.     StreamWriter writer = new StreamWriter(fs);  
  133.     writer.Write("tttt");//这里就是你要导出到word的内容,内容是你什么你自已DIY  
  134.     writer.Flush();  
  135.     writer.Close();  
  136.     fs.Close();  
  137. }  
  138.   
  139. 4. 导出datatable到excel  
  140.   
  141. DataTable dt = null;  
  142. if (ds_all.Tables[0] != null)  
  143. {  
  144.     dt = ds_all.Tables[0];  
  145. }  
  146. else {  
  147.     MessageBox.Show("没有数据记录""*^_^* 温馨提示信息", MessageBoxButtons.OK);  
  148.     return;  
  149. }  
  150. //上面只是取datatable,你自己diy  
  151. AsposeExcel tt = new AsposeExcel(saveFileDialog1.FileName, "");//不用模板, saveFileDialog1是什么?上面已经说过  
  152. bool OK_NO = tt.DatatableToExcel(dt);  
  153. if (OK_NO)  
  154. {  
  155.     MessageBox.Show("导出成功""*^_^* 温馨提示信息", MessageBoxButtons.OK);  
  156. }  
  157. else  
  158. {  
  159. }  
  160.   
  161. 5. Excel导入  
  162. private void 导入ToolStripMenuItem_Click(object sender, EventArgs e)  
  163. {  
  164.     string localFilePath = "";  
  165.     //点了保存按钮进入  
  166.     if (openFileDialog1.ShowDialog() == DialogResult.OK)// openFileDialog1不要再问我这是什么!  
  167.     {  
  168.         //获得文件路径  
  169.         localFilePath = openFileDialog1.FileName.ToString();  
  170. }  
  171.     AsposeExcel tt = new AsposeExcel(localFilePath);  
  172.     DataTable dt;  
  173.     try  
  174.     {  
  175.         dt = tt.ExcelToDatatalbe();  
  176.     }  
  177.     catch (Exception ex)  
  178.     {  
  179.         return;  
  180.     }  
  181. //有了datatable你自己就可以DIY啦,下面是我自己的你不用理  
  182. if (ddlResidence.SelectedValue == "违章确认")  
  183.     {  
  184.         if (dt.Rows[0][9].ToString() != "违章确认")  
  185.         {  
  186.                             return;  
  187.         }  
  188.         row = dt.Rows.Count;  
  189.         if (row <= 0) return;  
  190.         for (int i = 0; i < dt.Rows.Count; i++)  
  191.         {  
  192.             bllviola.Up_Confirmed_ByVnum(dt.Rows[i][6].ToString(), dt.Rows[i][9].ToString());  
  193.         }  
  194.         this.GridView1.DataSource = dt;  
  195.         GridView1.DataBind();  
  196. }  
1.添加引用:

Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载。关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的说。这里你暂时也可不理会它。)
即使没有安装office也能用噢,这是一个好强的大工具。
2.编写Excel操作类

using System;
using System.Collections.Generic;
using System.Text;
using Aspose.Cells;
using System.Data;
public class AsposeExcel
{
    private string outFileName = "";
    private string fullFilename = "";
    private Workbook book = null;
    private Worksheet sheet = null;
    public AsposeExcel(string outfilename, string tempfilename) //导出构造数
    {
        outFileName = outfilename;
        book = new Workbook();
        // book.Open(tempfilename);这里我们暂时不用模板
        sheet = book.Worksheets[0];
    }
    public AsposeExcel(string fullfilename) //导入构造数
    {
        fullFilename = fullfilename;
        // book = new Workbook();
        // book.Open(tempfilename);
        // sheet = book.Worksheets[0];
    }
    private void AddTitle(string title, int columnCount)
    {
        sheet.Cells.Merge(0, 0, 1, columnCount);
        sheet.Cells.Merge(1, 0, 1, columnCount);
        Cell cell1 = sheet.Cells[0, 0];
        cell1.PutValue(title);
        cell1.Style.HorizontalAlignment = TextAlignmentType.Center;
        cell1.Style.Font.Name = "黑体";
        cell1.Style.Font.Size = 14;
        cell1.Style.Font.IsBold = true;
        Cell cell2 = sheet.Cells[1, 0];
        cell1.PutValue("查询时间:" + DateTime.Now.ToLocalTime());
        cell2.SetStyle(cell1.Style);
    }
    private void AddHeader(DataTable dt)
    {
        Cell cell = null;
        for (int col = 0; col < dt.Columns.Count; col++)
        {
            cell = sheet.Cells[0, col];
            cell.PutValue(dt.Columns[col].ColumnName);
            cell.Style.Font.IsBold = true;
        }
    }
    private void AddBody(DataTable dt)
    {
        for (int r = 0; r < dt.Rows.Count; r++)
        {
            for (int c = 0; c < dt.Columns.Count; c++)
            {
                sheet.Cells[r + 1, c].PutValue(dt.Rows[R]­[c].ToString());
            }
        }
    }
    //导出------------下一篇会用到这个方法
    public Boolean DatatableToExcel(DataTable dt)
    {
        Boolean yn = false;
        try
        {
            //sheet.Name = sheetName;
            //AddTitle(title, dt.Columns.Count);
            //AddHeader(dt);
            AddBody(dt);
            sheet.AutoFitColumns();
            //sheet.AutoFitRows();
            book.Save(outFileName);
            yn = true;
            return yn;
        }
        catch (Exception e)
        {
            return yn;
            // throw e;
        }
    }
    public DataTable ExcelToDatatalbe()//导入
    {
        Workbook book = new Workbook();
        book.Open(fullFilename);
        Worksheet sheet = book.Worksheets[0];
        Cells cells = sheet.Cells;
        //获取excel中的数据保存到一个datatable中
        DataTable dt_Import = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, false);
        // dt_Import.
        return dt_Import;
    }
}[/R]

3. Word导出
//设置文件类型
// saveFileDialog为一个对话框控件
//如果没有人工具栏中拉,
//可以:SaveFileDialog saveFileDialog1=new SaveFileDialog();
saveFileDialog1.Filter = "导出Excel (*.xls)|*.xls|Word (*.doc)|*.doc";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.CreatePrompt = true;
saveFileDialog1.Title = "导出文件保存路径";
//saveFileDialog1.ShowDialog();
//string strName = saveFileDialog1.FileName;
//设置默认文件类型显示顺序
//saveFileDialog1.FilterIndex = 2;
//保存对话框是否记忆上次打开的目录
saveFileDialog1.RestoreDirectory = true;
//点了保存按钮进入
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
    //获得文件路径
    string localFilePath = saveFileDialog1.FileName.ToString();
    //获取文件名,不带路径
    string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);
    //获取文件路径,不带文件名
    string FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf("\\"));
    //给文件名前加上时间
    string newFileName = DateTime.Now.ToString("yyyyMMdd") + fileNameExt;
    //在文件名里加字符
    //saveFileDialog1.FileName.Insert(1,"dameng");
    saveFileDialog1.FileName = FilePath + "\\" + newFileName;
    System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile();//输出文件
    StreamWriter writer = new StreamWriter(fs);
    writer.Write("tttt");//这里就是你要导出到word的内容,内容是你什么你自已DIY
    writer.Flush();
    writer.Close();
    fs.Close();
}

4. 导出datatable到excel

DataTable dt = null;
if (ds_all.Tables[0] != null)
{
    dt = ds_all.Tables[0];
}
else {
    MessageBox.Show("没有数据记录", "*^_^* 温馨提示信息", MessageBoxButtons.OK);
    return;
}
//上面只是取datatable,你自己diy
AsposeExcel tt = new AsposeExcel(saveFileDialog1.FileName, "");//不用模板, saveFileDialog1是什么?上面已经说过
bool OK_NO = tt.DatatableToExcel(dt);
if (OK_NO)
{
    MessageBox.Show("导出成功", "*^_^* 温馨提示信息", MessageBoxButtons.OK);
}
else
{
}

5. Excel导入
private void 导入ToolStripMenuItem_Click(object sender, EventArgs e)
{
    string localFilePath = "";
    //点了保存按钮进入
    if (openFileDialog1.ShowDialog() == DialogResult.OK)// openFileDialog1不要再问我这是什么!
    {
        //获得文件路径
        localFilePath = openFileDialog1.FileName.ToString();
}
    AsposeExcel tt = new AsposeExcel(localFilePath);
    DataTable dt;
    try
    {
        dt = tt.ExcelToDatatalbe();
    }
    catch (Exception ex)
    {
        return;
    }
//有了datatable你自己就可以DIY啦,下面是我自己的你不用理
if (ddlResidence.SelectedValue == "违章确认")
    {
        if (dt.Rows[0][9].ToString() != "违章确认")
        {
                            return;
        }
        row = dt.Rows.Count;
        if (row <= 0) return;
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            bllviola.Up_Confirmed_ByVnum(dt.Rows[i][6].ToString(), dt.Rows[i][9].ToString());
        }
        this.GridView1.DataSource = dt;
        GridView1.DataBind();
}


 

//****************************************************************************************************

Aspose.Cells小实例

Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();Aspose.Cells.Worksheet sheet = workbook.Worksheets[0];sheet.FreezePanes(1, 1, 1, 0);//冻结第一行sheet.Cells["A1"].PutValue("ID");sheet.Cells["B1"].PutValue("手机号码");sheet.Cells["C1"].PutValue("姓名");sheet.Cells["D1"].PutValue("出生年月");sheet.Cells["E1"].PutValue("性别");sheet.Cells["F1"].PutValue("订购份数");sheet.Cells["G1"].PutValue("运营产品ID");sheet.Cells["H1"].PutValue("订单状态");sheet.Cells["I1"].PutValue("订单成功时间");sheet.Cells["J1"].PutValue("批次ID");sheet.Cells["K1"].PutValue("支付方式");sheet.Cells["L1"].PutValue("错误代码");///TODO///设置列1为文本,因为这列全是数字而且很长,不处理会变成自然数了。///这里需要注意Style是设置风格,而StyleFlag是开关,所以即使你设置了Style,没有打开对应的StyleFlag一样没用Aspose.Cells.Style sc1 = workbook.Styles[workbook.Styles.Add()];sc1.ShrinkToFit = true;sc1.Number = 49;Aspose.Cells.StyleFlag scf1 = new Aspose.Cells.StyleFlag();scf1.ShrinkToFit = true;scf1.NumberFormat = true;Aspose.Cells.Column colomn1 = sheet.Cells.Columns[1];colomn1.ApplyStyle(sc1, scf1);dt =getDataTable();//得到DataTablesheet.Cells.ImportDataTable(dt, false, "A2");//从A2开始填充数据sheet.AutoFitColumns();//让各列自适应宽度,这个很有用。workbook.Save(fileName, Aspose.Cells.FileFormatType.Excel2007Xlsx, Aspose.Cells.SaveType.OpenInExcel, response);//输出

很多时候输出的数据排序或者显示的列并不一定和DataTable得到的列排序数据完全一致,那么我们可以简单处理一下:比如把上面的

引用内容 引用内容
///TODO///设置列1为文本,因为这列全是数字而且很长,不处理会变成自然数了。///这里需要注意Style是设置风格,而StyleFlag是开关,所以即使你设置了Style,没有打开对应的StyleFlag一样没用Aspose.Cells.Style sc1 = workbook.Styles[workbook.Styles.Add()];sc1.ShrinkToFit = true;sc1.Number = 49;Aspose.Cells.StyleFlag scf1 = new Aspose.Cells.StyleFlag();scf1.ShrinkToFit = true;scf1.NumberFormat = true;Aspose.Cells.Column colomn1 = sheet.Cells.Columns[1];colomn1.ApplyStyle(sc1, scf1);dt =getDataTable();//得到DataTable

替换成:

引用内容 引用内容
DataTable dt1=getDataTable();for (int i = 0; i < dt1.Rows.Count; i++){sheet.Cells[(i + 1), 0].PutValue(dt1.Rows[i]["create_time"].ToString());sheet.Cells[(i + 1), 1].PutValue(dt1.Rows[i]["holder_mobile"].ToString());sheet.Cells[(i + 1), 2].PutValue(dt1.Rows[i]["rec_name"].ToString());sheet.Cells[(i + 1), 3].PutValue(string.IsNullOrEmpty(dt1.Rows[i]["rec_sex"].ToString()) ? "" : (dt1.Rows[i]["rec_sex"].ToString() == "1") ? "男" : "女");sheet.Cells[(i + 1), 4].PutValue(dt1.Rows[i]["rec_birthday"].ToString());sheet.Cells[(i + 1), 5].PutValue(dt1.Rows[i]["base_product_code"].ToString());sheet.Cells[(i + 1), 6].PutValue(dt1.Rows[i]["sell_price"].ToString());sheet.Cells[(i + 1), 7].PutValue(dt1.Rows[i]["pay_count"].ToString());sheet.Cells[(i + 1), 8].PutValue(dt1.Rows[i]["ins_policy"].ToString());sheet.Cells[(i + 1), 9].PutValue(dt1.Rows[i]["ins_end_date"].ToString());sheet.Cells[(i + 1), 10].PutValue(Rondi.Insu.Management.Utility.StateEnum.OrderFrom(dt1.Rows[i]["order_from"].ToString()));sheet.Cells[(i + 1), 11].PutValue(Rondi.Insu.Management.Utility.StateEnum.OrderState(dt1.Rows[i]["order_state"].ToString()));}

 

//*************************************************************************************
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Aspose.Cells使用总结大全 的相关文章

  • 解析最全的 Aspose.Words功能介绍,看这篇就够了

    Aspose Words 为用户提供了广泛的功能 用户可以执行大量与文档相关的任务 从简单地将文档从一种受支持的格式转换为另一种格式并在转换过程中修改这些文档到业务任务 例如创建结构化和视觉上吸引人的文档或自动报告 现代文档格式和标准很复杂
  • 如何使用C ++以编程方式在Word文档中使用目录?

    目录 TOC 是Word文档的重要组成部分 它提供了文档内容的概述 并允许您快速导航到所需的部分 您可能会遇到需要以编程方式从Word文档中添加 提取 更新或删除目录的情况 为此 本文将教您如何使用C 处理Word文件中的目录 让我们探索以
  • 如何在PHP中以编程方式将Excel文件转换为PDF?试试Aspose

    Excel电子表格被广泛用于以行和列的形式存储和分析数据 但是 在各种情况下 需要先将Excel文件转换为PDF 然后才能通过Internet共享它们 为了自动将Excel转换为PDF 本文介绍了 如何使用PHP通过编程将Excel文件转换
  • Java版PPT处理控件Aspose.Slides迎来v19.12升级!轻松创建旭日图并调整样式

    Aspose Slides for Java是独特的演示处理API 使应用程序能够读取 编写 修改和转换PowerPoint演示文稿 作为独立的API 它提供了管理PowerPoint关键功能的功能 例如管理文本 形状 表格和动画 向幻灯片
  • 如何在Android中以编程方式将HTML转换为PDF?

    在各种情况下 您可能需要将HTML页面转换为PDF格式 另一方面 您可能希望从WYSIWYG HTML编辑器的内容生成PDF 对于这种情况 本文介绍如何在Android应用程序中以编程方式将HTML转换为PDF 此外 还将了解用于自定义HT
  • 进度条警告!TheBrain 11落幕!超多思维导图新功能即将登陆12版

    自从文字发明以来 人类一直在努力捕捉思想 防止它消失在时间的迷雾中 1945年 瓦内瓦尔 布什 Vannevar Bush 设想了一种外部记忆 他在 大西洋月刊 上写道 人类的思维 是通过联想来运作的 手中拿着一件东西 它就会立即跳到另一件
  • 如何使用C ++以编程方式在Word文档中使用注释?

    Microsoft Word使您能够向Word文档添加注释 在诸如建议改进文档或共享文本思想等情况下 注释可能会有所帮助 在某些情况下 需要以编程方式管理评论 为此 本文将教您如何使用C 在Word文档中使用注释 让我们探索以下有关的内容
  • excel转换pdf方法 (aspose.cells亲测有效)

    AsposeUtils java package com lmp test utils import com aspose cells License import com aspose cells PdfSaveOptions impor
  • 教程:使用C#实现PDF文件和字节数组的相互转换

    字节数组有助于存储或传输数据 同样 PDF文件格式因其功能和兼容性而广受欢迎 可以使用C 语言将PDF文件转换为字节数组 也可以将字节数组转换为PDF文件 这可以帮助更有效地在数据库中存储和归档PDF文件 还可以通过使用字节数组来序列化数据
  • 使用Aspose在Java中将Excel文件转换为HTML

    Excel电子表格可让您以表格形式存储和组织数据 也可以执行计算以及生成不同类型的图形和图表以分析数据 但是 在各种情况下 可能需要执行Excel到HTML的转换才能将工作表转换为HTML页面 例如 将电子表格的内容嵌入到网页中时 因此 本
  • 复制 EXCEL 单元格 x 次

    我有一列大约有 1000 个 IP 地址 我需要在一列中打印 5 次 例如 10 10 10 1 10 10 10 2 10 10 10 3 10 10 10 4 应该成为 10 10 10 1 10 10 10 1 10 10 10 1
  • 粘贴 Mathematica 代码,以便将其分解为单独的输入单元格

    我经常将 Mathematica 代码从网站 例如 SO 复制到笔记本上 代码通常被粘贴为单个输入单元格 我正在寻找一种简单的方法将其粘贴为多个输入单元格 以便于逐步评估 例如 a 2 f x x a Plot f x x 0 2 理想情况
  • 突出显示热图中的单元格

    我目前正在尝试根据其他两个矩阵设置矩阵的热图并突出显示特定的单元格 一个例子 gt SOI NAP G021 NAP G033 NAP G039 NAP G120 NAP G122 2315101 59 69418 27 26002 69
  • 阿帕奇 POI 和颜色

    我在使用 Apache POI 时遇到一些问题 如果能得到一些帮助就好了 我想删除 Excel 工作表子部分中的颜色 为此 我尝试的第一件事是渲染我想要清理的单元格 假设仅第一行的单元格 并将其颜色设置为白色 cell getCellSty
  • 打印页表行/单元格时在分页符上拆分

    我有一个包含嵌套表格的表格 当我打印此页面时 单元格在分页符上被分割 我是否有机会控制它应该跳到下一页而不是分割中间 我使用以下方法将一行的内容保留在一页上 tr 不幸的是 浏览器支持有限 在 Internet Explorer 9 中运行
  • JAVA - 在 jxl 中写入 Excel 单元格时出现内存不足错误

    我正在使用 JXL 编写一个 50000 行 30 列的 Excel 文件 我的代码如下所示 for int j 0 j myWritableSheet addCell new Label 0 j myResultSet getString
  • 将 HTML 转换为 doc(x) 和/或 PDF [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须将 html 转换为 doc x 和 pdf 格式 我找到了 aspose 但是这个工具可以完成比我需要的更多的工作 这就是为什么它
  • 如何在 Xamarin 中填充表视图?

    我正在尝试将 C Windows 应用程序移植到 Mac 但我一直试图用一堆字符串填充表视图 表视图似乎有两列 这对我来说很好 但我不知道如何访问单元格 行 列或添加项目 在 Windows 中 我做了类似的事情 foreach var i
  • 如何仅通过鼠标使用 javafx 在表格视图中选择多个单元格?

    我有一个在 javafx 中带有表格视图的应用程序 我想仅通过鼠标选择多个单元格 类似于 Excel 中存在的选择 我尝试过 但我不能做某事 这个问题的正确答案在这里https community oracle com thread 262
  • VBA Excel:将范围值分配给新范围

    我在将一个工作簿范围中的值分配给当前工作簿中的某个范围时遇到问题 当我使用 Range A1 C1 分配我的范围时 此代码工作正常 但是当我使用 Range Cells 1 1 Cells 1 3 定义我的范围时 该函数会失败 Sub Co

随机推荐

  • C#中Invoke 和 BeginInvoke的涵义和区别

    BeginInvoke 方法真的是新开一个线程进行异步调用吗 xff1f 参考以下代码 xff1a public delegate void treeinvoke private void UpdateTreeView MessageBox
  • C# 理解lock

    一 为什么要lock xff0c lock了什么 xff1f 当我们使用 线程 的时候 xff0c 效率最高的方式当然是 异步 xff0c 即各个线程同时运行 xff0c 其间不相互依赖和等待 但当不同的线程都需要访问某个资源的时候 xff
  • excel操作的几种方法

    using System using System Collections Generic using System Text using System Data using System Windows Forms using Syste
  • c#中如何实现拷贝对象

    大家都知道 xff0c 在C 中变量的存储分为值类型和引用类型两种 xff0c 而值类型和引用类型在数值变化是产生的后果是不一样的 xff0c 值类型我们可以轻松实现数值的拷贝 xff0c 那么引用类型呢 xff0c 在对象拷贝上存在着一定
  • 深入了解Windows句柄到底是什么

    总是有新入门的Windows程序员问我Windows的句柄到底是什么 xff0c 我说你把它看做一种类似指针的标识就行了 xff0c 但是显然这一答案不能让他们满意 xff0c 然后我说去问问度娘吧 xff0c 他们说不行网上的说法太多还难
  • 句柄概念

    句柄 xff08 handle xff09 xff0c 有多种意义 xff0c 其中第一种是指程序设计 xff0c 第二种是指Windows编程 现在大部分都是指程序设计 程序开发这类 第一种解释 xff1a 句柄是一种特殊的 智能指针 当
  • 腾讯云大数据发布最新产品矩阵,助力企业整合打通海量数据

    9月11日 xff0c 主题为 释放数字经济发展的新动能 的腾讯全球数字生态大会大数据专场在线上拉开帷幕 腾讯大数据领域的多位顶级专家 xff0c 与包括 Hadoop 创始人 Doug Cutting 在内的业内顶级大咖 xff0c 以及
  • C/C++中函数参数传递

    看了内存管理的有关内容 xff0c 有一点了解 xff0c 但不是很深入 xff0c 发现之前写代码时有很多细节问题没有注意到 xff0c 只知道这样做可以实现功能 xff0c 却不知道为什么可以这样 xff0c 对于采用自己的方法造成的隐
  • Windows窗口刷新机制详解

    1 Windows的窗口刷新管理 窗口句柄 xff08 HWND xff09 都是由操作系统内核管理的 xff0c 系统内部有一个z order序列 xff0c 记录着当前窗口从屏幕底部 xff08 假象的从屏幕到眼睛的方向 xff09 x
  • C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)

    BSS段 xff08 bss segment xff09 通常是指用来存放程序中 未初始化 的 全局变量 的一块内存区域 BSS是英文Block Started by Symbol的简称 BSS段属于静态内存分配 数据段 xff1a 数据段
  • C# 窗体Show和ShowDialog 方法的区别详解

    CenterParent 窗体在其父窗体中居中 CenterScreen 窗体在当前显示窗口中居中 xff0c 其尺寸在窗体大小中指定 Manual 窗体的位置由 Location 属性确定 WindowsDefaultBounds 窗体定
  • c# 窗口句柄问题 。

    1 如何获得一个窗口的句柄 xff1f 例如获取窗口PictureBox控件 xff08 其他控件也可以 xff09 的句柄 xff0c csharp view plain copy IntPtr handle 61 pictureBox
  • c#中已知一个外部窗口的句柄,怎么关闭

    已知一个外部窗口的句柄 xff0c 怎么关闭它 怎么给这个窗口的一个文本框设置内容 public void Test Handle windowhandle string TextBoxName System windws froms fr
  • 数组内存分配概念

    在这里解答一下 xff1a int arr 4 amp arr 1 61 arr 0 43 sizeof int 静态分配 xff0c 即普通数组 xff0c 由于在栈中分配 xff0c 而栈的生成方向是自高地址向低地址生成 所以有 xff
  • 静态数组和动态数组 内存分布

    数组是程序设计中是一个非常重要的概念 数组是一个用于收集大量类似数据的容器 xff0c 以及其每一个元素能被相同处理过程迭代来处理的一个抽象体 创建数组一般有三种方式 xff1a 全局 静态范围的数组 xff0c 局部变量数组 xff0c
  • C语言 内存分配 地址 指针 数组 参数 解析

    指针简介 指针式保存变量地址 的变量 增加阅读难度 指针 和 goto 语句会增加程序的理解难度 容易出现错误 ANSI C American National Standards Institute 美国国家标准学会 即标准C 通用指针类
  • C++数组与指针概念

    指向数组元素的指针 一个变量有地址 xff0c 一个数组包含若干元素 xff0c 每个数组元素都在内存中占用存储单元 xff0c 它们都有相应的地址 指针变量既然可以指向变量 xff0c 当然也可以指向数组元素 xff08 把某一元素的地址
  • [代码实例][C]Linux实现线程池

    ThreadPool h span class token macro property span class token directive keyword ifndef span THREADPOOL H span span class
  • C语言中指针的初始化和赋值

    1 指针的初始化 指针初始化时 xff0c 61 的右操作数必须为内存中数据的地址 xff0c 不可以是变量 xff0c 也不可以直接用整型地址值 但是int p 61 0 除外 xff0c 该语句表示指针为空 此时 xff0c p只是表示
  • Aspose.Cells使用总结大全

    使用到 Aspose Cells 插件 xff0c 整理一下 一 xff1a 新建解决方案 xff0c 目录如下 目录说明 xff1a Program cs 入口类 ExcelGenerator cs Aspose Cells 操作类 As