OWC生成Excel的效能优化

优化前的代码, 从DataTable导入1000笔数据要差不多10分钟,有时候还会超时或出错:

public void WriteDataToSpreadsheet2(SpreadsheetClass p_spreadsheet, DataTable p_dt,
  int p_iRow, int p_iCol, bool p_bWithCaption, int p_iStaredRecord,
  int p_iLimited, int[] p_iTextColumns)
{
  Worksheet f_sheet = p_spreadsheet.ActiveSheet;
  int f_iRowCount = 0;
  int f_iTotalRow = 0;
  int f_iMaxRow = 65535;

  int f_iRow, f_iCol, f_iDtColumn;

  f_iRow = p_iRow;
  f_iCol = p_iCol;
  //使用标题
  if (p_bWithCaption == true)
  {
    foreach (DataColumn f_col in p_dt.Columns)
    {
      f_sheet.Cells[f_iRow, f_iCol] = f_col.Caption;
      f_iCol++;
    }
    f_iRow++;
    f_iTotalRow++;

    f_iCol = p_iCol;
  }

  foreach (DataRow f_row in p_dt.Rows)
  {
    f_iDtColumn = 0;
    foreach (DataColumn f_col in p_dt.Columns)
    {
      if (f_row[f_col] != DBNull.Value)
      {
        //注意,这里是一列一列的赋值
        if (Array.IndexOf(p_iTextColumns, f_iDtColumn) > -1)
          f_sheet.Cells[f_iRow, f_iCol] = "'" + f_row[f_col].ToString();  //强制转换成字符串
        else
          f_sheet.Cells[f_iRow, f_iCol] = f_row[f_col];
      }
      f_iDtColumn++;
      f_iCol++;
    }

    f_iRowCount++;
    f_iTotalRow++;

    if (f_iTotalRow >= f_iMaxRow)
      break;

    if (p_iLimited > 0)
    {
      if (f_iRowCount >= p_iLimited)
        break;
    }
    f_iRow++;
    f_iCol = p_iCol;
  }
  return;
}

时间: 2024-09-18 10:58:06

OWC生成Excel的效能优化的相关文章

poi处理excel-小白求助:poi生成excel速度过慢问题,该怎么优化

问题描述 小白求助:poi生成excel速度过慢问题,该怎么优化 package poiMain; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.S

Asp.Net用OWC操作Excel的实例代码

这篇文章介绍了Asp.Net用OWC操作Excel的实例代码,有需要的朋友可以参考一下,希望对你有所帮助   复制代码 代码如下:     string connstr = System.Configuration.ConfigurationManager.ConnectionStrings["DqpiHrConnectionString"].ToString();         SqlConnection conn = new SqlConnection(connstr);    

java-jquery解析xml怎样把结果存到list或者hashmap最后生成excel表格

问题描述 jquery解析xml怎样把结果存到list或者hashmap最后生成excel表格 $.ajax({ type:""GET"" dataType:""XML"" timeout: 1000 //设定超时 cache: false //禁用缓存 url:""${pageContext.request.contextPath}/xml/from.xml"" success:fun

使用poi和jfreechart生成excel图表图片

最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西.有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现. 除此之外,也有一些功能只需要生成对应的图标样式的图片就好,我们实现的时候主要用了两种方式,一种就是由前台生成图片base64码,然后后台解码生成图片插入到excel,但是这种方式有 一定的局限性,也就是当某些功能需要后台定时生成excel的时候,就无法获取这个图片. 于是我们采用了另一种方法,也就是是用jfreechart生成对应的图片

ASP.NET中生成Excel遇到的问题及改进方法

先看一下方法(其中略去了一些判断和扩展): 生成Excel老代码 复制代码 代码如下: /// <summary> /// 将一组对象导出成EXCEL /// </summary> /// <typeparam name="T">要导出对象的类型</typeparam> /// <param name="objList">一组对象</param> /// <param name="

php,不用COM,生成excel文件

excel|生成excel 用php生成excel文件   <?header("Content-type:application/vnd.ms-excel");header("Content-Disposition:filename=test.xls");echo "test1\t";echo "test2\t\n";echo "test1\t";echo "test2\t\n";

生成Excel文件范例(1):客户端

excel|客户端|生成excel 输入页面的代码:------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312">

在系统中生成Excel流并传给用户

excel|生成excel 在系统中经常出现这样的情况就是生成excel流 并将生成的Excel 流传给用户 一般的来讲可以利用 Response 来向客户端发送一个HTTP头 ,并将Excel流发送出去就可以了,但会出现一个问题就是点击打开的时候会出现两次 文件下载 对话框,主要的原因:(现在的猜测,还没有找到准确的原因). 第一次打开 时 ,在系统中已经存在了excel流的临时文件(就是文件,没有文件的后缀名的存在) ,但没有原来的(真实文件的存在),要求用户是否将临时文件保存到计算机其他的

能自动生成excel格式文件吗

excel|生成excel 我是着处理的<?header("Content-type:application/vnd.ms-excel");header("Content-Disposition:filename=test.xls");echo "编 号\t";echo "公司名称\t";echo "房 间 号\t";echo "入驻日期\t";echo "联 系 人\t