数据写入Excel文件自动分页,并指定要合并的列索引
2013-01-17 12:58
567 查看
/// <summary>
/// 将DataTable数据写入Excel文件(自动分页,并指定要合并的列索引)
/// </summary>
/// <param name="dt">DataTable</param>
/// <param name="rows">每个WorkSheet写入多少行数据</param>
/// <param name="top">表格数据起始行索引</param>
/// <param name="left">表格数据起始列索引</param>
/// <param name="mergeColumnIndex">DataTable中要合并相同行的列索引,从0开始</param>
public void DataTableToExcel(DataTable dt,int rows,int top,int left,int mergeColumnIndex)
{
int rowCount = dt.Rows.Count; //源DataTable行数
int colCount = dt.Columns.Count; //源DataTable列数
sheetCount = this.GetSheetCount(rowCount,rows); //WorkSheet个数
// StringBuilder sb;
//复制sheetCount-1个WorkSheet对象
for(int i=1;i<sheetCount;i++)
{
workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
workSheet.Copy(missing,workBook.Worksheets[i]);
}
for(int i=1;i<=sheetCount;i++)
{
int startRow = (i - 1) * rows; //记录起始行索引
int endRow = i * rows; //记录结束行索引
//若是最后一个WorkSheet,那么记录结束行索引为源DataTable行数
if(i == sheetCount)
endRow = rowCount;
//获取要写入数据的WorkSheet对象,并重命名
workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
workSheet.Name = sheetPrefixName + "-" + i.ToString();
//将dt中的数据写入WorkSheet
// for(int j=0;j<endRow-startRow;j++)
// {
// for(int k=0;k<colCount;k++)
// {
// workSheet.Cells[top + j,left + k] = dt.Rows[startRow + j][k].ToString();
// }
// } //利用二维数组批量写入
int row = endRow-startRow;
string[,] ss = new string[row,colCount]; for(int j=0;j<row;j++)
{
for(int k=0;k<colCount;k++)
{
ss[j,k] = dt.Rows[startRow + j][k].ToString();
}
} range = (Excel.Range)workSheet.Cells[top,left];
range = range.get_Resize(row,colCount);
range.Value = ss; //合并相同行
this.MergeRows(workSheet,left+mergeColumnIndex,top,rows);
}
}
/// 将DataTable数据写入Excel文件(自动分页,并指定要合并的列索引)
/// </summary>
/// <param name="dt">DataTable</param>
/// <param name="rows">每个WorkSheet写入多少行数据</param>
/// <param name="top">表格数据起始行索引</param>
/// <param name="left">表格数据起始列索引</param>
/// <param name="mergeColumnIndex">DataTable中要合并相同行的列索引,从0开始</param>
public void DataTableToExcel(DataTable dt,int rows,int top,int left,int mergeColumnIndex)
{
int rowCount = dt.Rows.Count; //源DataTable行数
int colCount = dt.Columns.Count; //源DataTable列数
sheetCount = this.GetSheetCount(rowCount,rows); //WorkSheet个数
// StringBuilder sb;
//复制sheetCount-1个WorkSheet对象
for(int i=1;i<sheetCount;i++)
{
workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
workSheet.Copy(missing,workBook.Worksheets[i]);
}
for(int i=1;i<=sheetCount;i++)
{
int startRow = (i - 1) * rows; //记录起始行索引
int endRow = i * rows; //记录结束行索引
//若是最后一个WorkSheet,那么记录结束行索引为源DataTable行数
if(i == sheetCount)
endRow = rowCount;
//获取要写入数据的WorkSheet对象,并重命名
workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
workSheet.Name = sheetPrefixName + "-" + i.ToString();
//将dt中的数据写入WorkSheet
// for(int j=0;j<endRow-startRow;j++)
// {
// for(int k=0;k<colCount;k++)
// {
// workSheet.Cells[top + j,left + k] = dt.Rows[startRow + j][k].ToString();
// }
// } //利用二维数组批量写入
int row = endRow-startRow;
string[,] ss = new string[row,colCount]; for(int j=0;j<row;j++)
{
for(int k=0;k<colCount;k++)
{
ss[j,k] = dt.Rows[startRow + j][k].ToString();
}
} range = (Excel.Range)workSheet.Cells[top,left];
range = range.get_Resize(row,colCount);
range.Value = ss; //合并相同行
this.MergeRows(workSheet,left+mergeColumnIndex,top,rows);
}
}
相关文章推荐
- 将DataTable数据写入Excel文件(自动分页)
- 将DataTable数据写入Excel文件(自动分页)
- matlab数据自动循环写入excel文件
- 将DataTable数据写入Excel文件(不分页)
- java使用poi把从数据库中取出的数据写入到excel文件中并保存到指定文件路径
- 将ListView中的数据导出到指定的Excel文件中
- java把excel数据写入Oracle数据库(.xls文件)(转)
- 将特定格式的TXT数据文件写入EXCEL
- java把excel数据写入Oracle数据库(.xls文件)
- Python 将指定目录下的文件的顺序数字命名的bin文件合并为一个bin文件(数据组织)
- Python对excel写入数据操作实例代码(改进无法合并最后一组数据的问题)
- 通过POI组件把数据写入到Excel文件中
- 【整理】Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据
- C#读取EXCEL 文件同时向文件中写入数据和Excel的Range对象
- 将指定索引列的数据相同的行合并
- 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格
- 将DataGrid数据写入Excel文件
- VBA 汇总指定文件夹下的Excel文件数据
- Excel中指定的sheet名称或索引读取数据到DataTable
- 通过ASP程序将EXCEL文件数据写入数据库