zoukankan      html  css  js  c++  java
  • Excel在C#中实现添加Book与sheet

    1. 创建一个新excel的application:
    application exc = new application();
    if (exc == null) {
    console.writeline("error: excel couldn't be started");
    return 0;
    }

    2. 让这个工程可见:
    exc.set_visible(0, true);
    3. 获取workbooks集合:
    workbooks workbooks = exc.workbooks;
    4. 加入新的workbook:
    _workbook workbook = workbooks.add(xlwbatemplate.xlwbatworksheet, 0);
    5. 获取worksheets集合:
    _worksheet worksheet = (_worksheet) sheets.get_item(1);
    if (worksheet == null) {
    console.writeline ("error in worksheet == null");
    }

    6. 给单元格设置变量:
    range range1 = worksheet.get_range("c1", missing.value);
    if (range1 == null) {
    console.writeline ("error: range == null");
    }
    const int ncells = 1;
    object[] args1 = new object[1];
    args1[0] = ncells;
    range1.gettype().invokemember("value", bindingflags.setproperty, null, range1, args1);

    例程:
    using system;
    using system.reflection;
    using system.runtime.interopservices;
    using excel;

    class excel {
    public static int main() {
    application exc = new application();
    if (exc == null) {
    console.writeline("error: excel couldn't be started!");
    return 0;
    }

    exc.set_visible(0, true);
    workbooks workbooks = exc.workbooks;
    _workbook workbook = workbooks.add(xlwbatemplate.xlwbatworksheet, 0);
    sheets sheets = workbook.worksheets;

    _worksheet worksheet = (_worksheet) sheets.get_item(1);
    if (worksheet == null) {
    console.writeline ("error: worksheet == null");
    }

    range range1 = worksheet.get_range("c1", missing.value);
    if (range1 == null) {
    console.writeline ("error: range == null");
    }
    const int ncells = 1;
    object[] args1 = new object[1];
    args1[0] = ncells;
    range1.gettype().invokemember("value", bindingflags.setproperty, null,range1, args1);
    return 100;
    }
    }

    现在我们来看看如何使用数组,他有些类似于设置单元格。仅仅需要的改变只是args2[0] = array2;
    const int ncell = 5;
    range range2 = worksheet.get_range("a1", "e1");
    int[] array2 = new int [ncell];
    for (int i=0; i < array2.getlength(0); i++) {
    array2 = i+1;
    }
    object[] args2 = new object[1];
    args2[0] = array2;
    range2.gettype().invokemember("value", bindingflags.setproperty, null, range2, args2);



    /// <summary>
    /// 将指定sheet页的内容完全复制另一sheet页
    /// </summary>
    /// <param name="beforeSheet">被复制的sheet页 </param>
    /// <param name="afterSheet">目标sheet页 </param>
    /// <param name="startRow">复制内容在目标sheet页的开始行 </param>
    /// <param name="startColumn">复制内容在目标sheet页的开始列 </param>
    /// <returns>是否复制成功 </returns>
    private bool CopyRange(Excel._Worksheet beforeSheet, Excel._Worksheet afterSheet, int startRow, int startColumn)
    {
    bool isCopyRange = false;
    try
    {
    Excel.Range beforeRange = beforeSheet.UsedRange;
    int rangeRowCount = beforeRange.Rows.Count;
    int rangeColumnCount = beforeRange.Columns.Count;


    // 空出将写数据集的EXCEL的范围
    for (int row = 0; row <= rangeRowCount - 1; row++)
    {

    Excel.Range rang = afterSheet.get_Range(afterSheet.Cells[startRow, 1],
    afterSheet.Cells[startRow, 1]).EntireRow;
    //插入一行。
    afterSheet.get_Range(afterSheet.Cells[startRow + row, 1],
    afterSheet.Cells[startRow + row, 1]).EntireRow.Insert(Excel.XlDirection.xlUp, null);
    Excel.Range rangTarget = afterSheet.get_Range(afterSheet.Cells[startRow + row, 1],
    afterSheet.Cells[startRow + row, 1]).EntireRow;
    rang.Copy(rangTarget);

    }

    beforeRange.Copy(afterSheet.get_Range(afterSheet.Cells[startRow, startColumn],
    afterSheet.Cells[startRow, startColumn + rangeColumnCount]));

    isCopyRange = true;
    }
    catch
    {

    }
    return isCopyRange;
    }
    #endregion

  • 相关阅读:
    jQuery的deferred对象详解 jquery回调函数
    Table does not have the identity property. Cannot perform SET operation.
    SQLServer中merge函数用法详解
    jQuery事件命名空间多事件绑定自定义事件js 命名空间 javascript命名空间
    you have mixed tabs and spaces fix this
    java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
    SQLServer 窗口函数
    TFS中查看我的所有签入迁出记录 TFS 怎么查看所有的修改
    日历控件My97DatePicker WdatePicker屏蔽 onchange的解决方法
    【Python】生成词云
  • 原文地址:https://www.cnblogs.com/guyuehuanhuan/p/1899668.html
Copyright © 2011-2022 走看看