- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DataGridView输出或保存为Excel文件
DataGridView输出或保存为Excel文件
2010-04-21 16:11:12| 分类: 程序源码 | 标签: |举报 |字号大中小订阅
/// summary
/// DataGridView控件数据导出到Excel
/// excel2003 工作表大小 65,536 行乘以 256 列
///excel2007 工作表大小 1,048,576 行乘以 16,384 列 是2003的16倍
///否则你需要建立多个工作表来装载更多的数据
/// /summary
/// param name=ExportGridDataGridView控件/param
/// param name=fullFileName保存的文件路径/param
/// param name=IsOpenFile是否打开文件/param
/// returnsTrue/False/returns
public bool OutputFileToExcel(DataGridViewC ExportGrid, string fullFileName, bool IsOpenFile)
{
int id = 0;
bool ExportSuccess = false;
//如果网格尚未数据绑定
if (ExportGrid == null)
{
return false;
}
//Excel2003 工作表大小 65,536 行乘以 256 列
if (ExportGrid.Rows.Count 65536 || ExportGrid.ColumnCount 256)
{
return false;
}
// 列索引,行索引
int colIndex = 0;
int rowIndex = 0;
//总可见列数,总可见行数
int colCount = ExportGrid.Columns.GetColumnCount(DataGridViewElementStates.Visible);
int rowCount = ExportGrid.Rows.GetRowCount(DataGridViewElementStates.Visible);
if (rowCount == 0 || colCount == 0) //如果DataGridView中没有行,返回
{
return false;
}
// 创建Excel对象
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
return false;
}
// 创建Excel工作薄
Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];
Microsoft.Office.Interop.Excel.Range range;
IntPtr t = new IntPtr(xlApp.Hwnd);
// 创建缓存数据
object[,] objData = new object[rowCount + 1, colCount];
// 获取列标题,隐藏的列不处理
for (int i = 0; i ExportGrid.ColumnCount; i++)
{
if (ExportGrid.Columns[i].Visible)
{
objData[rowIndex, colIndex++] = ExportGrid.Columns[i].HeaderText;
if (ExportGrid.Columns[i].ValueType.ToString() == System.String)
{
//设置成文本型,有效避免将前置的0自动删除了
range = xlSheet.get_Range(xlApp.Cells[4, colIndex], xlApp.Cells[rowCount + 4, colIndex]);
range.NumberFormat = @;
}
}
}
// 获取数据,隐藏的列的数据忽略
for (int i = 1; i = rowCount; i++)
{
rowIndex++;
colIndex = 0;
for (int j = 0; j Expor
文档评论(0)