winform导出excel
public void AllDataSetToExcel(DataSet ds)
{
string saveFileName = "";
bool fileSaved = false;
Microsoft.Win32.SaveFileDialog saveDialog = new Microsoft.Win32.SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = "库存 " + DateTime.Today.ToString("yyyy-MM-dd");
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法启动Excel,可能您的机子未安装Excel");
return;
}
Microsoft.Office.Interop.Excel.Workbook workbook = xlApp.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
Microsoft.Office.Interop.Excel.Range range;
// 列索引,行索引,总列数,总行数
int colIndex = 0;
int RowIndex = 0;
int colCount = ds.Tables[0].Columns.Count;
int RowCount = ds.Tables[0].Rows.Count;
// *****************获取数据*********************
// 创建缓存数据
object[,] objData = new object[RowCount + 1, colCount];
// 获取列标题
for (int k = 0; k < ds.Tables[0].Columns.Count; k++)
{
if (ds.Tables[0].Columns[k].ColumnName == "sgAcName") ds.Tables[0].Columns[k].ColumnName = "操作员";
if (ds.Tables[0].Columns[k].ColumnName == "sgCode") ds.Tables[0].Columns[k].ColumnName = "美国转运单号";
if (ds.Tables[0].Columns[k].ColumnName == "sgLbs") ds.Tables[0].Columns[k].ColumnName = "重量(公斤)";
if (ds.Tables[0].Columns[k].ColumnName == "sgPin") ds.Tables[0].Columns[k].ColumnName = "用户标识(字母)";
if (ds.Tables[0].Columns[k].ColumnName == "sgStoreCode") ds.Tables[0].Columns[k].ColumnName = "仓储位置(字母+数字)";
if (ds.Tables[0].Columns[k].ColumnName == "sgPort") ds.Tables[0].Columns[k].ColumnName = "仓库";
if (ds.Tables[0].Columns[k].ColumnName == "sgTPRemark") ds.Tables[0].Columns[k].ColumnName = "内部备注";
if (ds.Tables[0].Columns[k].ColumnName == "sgTime") ds.Tables[0].Columns[k].ColumnName = "操作日期";
if (ds.Tables[0].Columns[k].ColumnName == "sgZbDate") ds.Tables[0].Columns[k].ColumnName = "收件日期";
objData[RowIndex, colIndex++] = ds.Tables[0].Columns[k].ColumnName.ToString();
}
// 获取具体数据
for (RowIndex = 0; RowIndex < RowCount; RowIndex++)
{
for (colIndex = 0; colIndex < colCount; colIndex++)
{
objData[RowIndex + 1, colIndex] = ds.Tables[0].Rows[RowIndex][colIndex];
}
}
//********************* 写入Excel*******************
range = worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)xlApp.Cells[1, 1], (Microsoft.Office.Interop.Excel.Range)xlApp.Cells[RowCount + 1, colCount]);
range.Value2 = objData;
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
Application.DoEvents();
// //*******************设置输出格式******************************
////设置顶部説明
//range = worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)xlApp.Cells[1, 1], (Microsoft.Office.Interop.Excel.Range)xlApp.Cells[1, colCount]);
//range.MergeCells = true;
//range.RowHeight = 38;
//range.Font.Bold = true;
//range.Font.Size = 14;
//range.Font.ColorIndex = 10;//字体颜色
//xlApp.ActiveCell.FormulaR1C1 = "导入记录查询结果";
//特殊数字格式
range = worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)xlApp.Cells[2, 8], (Microsoft.Office.Interop.Excel.Range)xlApp.Cells[RowCount + 1, 8]);
range.NumberFormat = "yyyy-MM-dd hh:mm:ss";
//特殊数字格式
range = worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)xlApp.Cells[2, 9], (Microsoft.Office.Interop.Excel.Range)xlApp.Cells[RowCount + 1, 9]);
range.NumberFormat = "yyyy-MM-dd hh:mm:ss";
xlApp.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
range = worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)xlApp.Cells[1, 1], (Microsoft.Office.Interop.Excel.Range)xlApp.Cells[1, colCount]);
// range.Interior.ColorIndex = 10;//背景色
range.Interior.Color = Color.Yellow;
range.Font.Bold = true;
range.RowHeight = 20;
//range.Cells.Columns.AutoFit();
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 1]).ColumnWidth = 15;
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 2]).ColumnWidth = 35;
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 3]).ColumnWidth = 15;
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 4]).ColumnWidth = 15;
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 5]).ColumnWidth = 12;
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 6]).ColumnWidth = 10;
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 7]).ColumnWidth = 28;
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 8]).ColumnWidth = 28;
((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 9]).ColumnWidth = 28;
//***************************保存 * *********************
if (saveFileName != "")
{
try
{
workbook.Saved = true;
workbook.SaveAs(saveFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8);
fileSaved = true;
MessageBox.Show("Export Excel success");
}
catch (Exception ex)
{
fileSaved = false;
MessageBox.Show("导出文件时出错,文件可能正被打开!/n" + ex.Message);
}
}
else
{
fileSaved = false;
}
xlApp.Quit();
GC.Collect();//强行销毁
}
#endregion
winform导出excel的更多相关文章
- Winform 导出Excel
private void 导出excelToolStripMenuItem_Click(object sender, EventArgs e) { ) { var saveFileDialog1 = ...
- c# winform导出Excel
//需要注意添加引用Microsoft.Office.Interop.Excel.dll string fileName =DateTime.Now.Year+ DateTime.Now.Month+ ...
- C#导入导出Excel表的数据
一:C#导入导出EXCEL文件的类 代码如下: 首先将Microsoft Excel 14.0 Object Library 引用导入 using System; using System.Data; ...
- winform导入导出excel,后台动态添加控件
思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- C# winform 导出导入Excel/Doc 完整实例教程[网上看到的]
还真没做过winform的导出导入,今天上网百度了一下.结果--- 所以还是我自己写个吧.之前做过web的,半搬半做就OK. 1添加引用:Aspose.Cells.dll(我们就叫工具包吧,可以从网上 ...
- 懒人小工具1:winform自动生成Model,Insert,Select,Delete以及导出Excel的方法
懒人小工具2:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法 github地址:https://github.com/Jimmey-Jiang/J ...
- NPOI导入导出EXCEL通用类,可直接使用在WinForm项目中
由于XSSFWorkbook类型的Write方法限制,Write完成后就自动关闭流数据,所以无法很好的支持的Web模式,网上目前也未找到好的解决方案. 注意:若直接使用在WinForm项目中,必需先下 ...
- C#+Aspose.Cells 导出Excel及设置样式 (Webform/Winform)
在项目中用到,特此记录下来,Aspose.Cells 不依赖机器装没有装EXCEL都可以导出,很方便.具体可以参考其他 http://www.aspose.com/docs/display/cells ...
随机推荐
- Golang内建库学习笔记(2)-web服务器相关
package main import ( "net/http" "fmt" "strings" "log" ) fun ...
- Linux忽略大小写的查找技巧(转)
1.vim 中的查找 Linux 下 vim搜索文件内容时加上 \c 参数可以忽略搜索字符的大小写. 比如用vim 搜索文件中的 China 时 可用 :/china\c 2. find 查找 Lin ...
- xss原理及简单介绍
XSS简单介绍-Web攻击 一 ·基础介绍 xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删 ...
- HarmonyOS单模块编译与源码导读
我这里以3518的开发板为例进行讲解,3516的也是通用的. 下面是之前全量编译的脚本 python build.py ipcamera_hi3518ev300 -b debug HarmonyOS最 ...
- Jenkins(8)构建触发器之定时构建和轮询 SCM
前言 跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行. jenkins的定时任务是用的crontab语法 定时构建语法 ...
- shell脚本的使用该熟练起来了,你说呢?(篇一)
作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君
- P1908 逆序对——树状数组&离散化&快读快写の学习
题目简述: 对于给定的一段正整数序列,逆序对就是序列中 a_i>a_jai>aj 且 i<ji<j 的有序对. 输出序列中逆序对的数目. 知识补充: 树状数组: 这东西就是 ...
- 2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解
2019 第十届蓝桥杯大赛软件类省赛 Java A组 试题A 题解 题目最后一句贴心的提示选手应该使用 long (C/C++ 应该使用 long long). 本题思路很直白,两重循环.外层 ...
- Inceptor查询语句
-- MySQL中的语句都能用,不再一一描述,只记录一些不同 详情见Inceptor 6.0文档 3.4.4查询语句这节 -- 查询语句 SELECT开头,可以通过添加多种从句从Inceptor中的表 ...
- 【noi 2.6_9289】Ant Counting 数蚂蚁{Usaco2005 Nov}(DP)
题意:有M个家族的蚂蚁,各Ni只(互相相同).问选出 l~r 只的不同方案数. 解法:很基础的一种DP,不要被"排列组合"所迷惑了啊~我之前接触过这个类型,可惜又忘了,一定要记住! ...