private void exp()
{
try
{
SaveFileDialog sdf = new SaveFileDialog();
sdfTitle = "EXECL文件";
sdfFilter = "EXECL文件(xls) |xls |所有文件() |";
if (sdfShowDialog() != DialogResultOK)
{
return;
}
WaitFormServiceCurrentCreateWaitForm();
ExcelHelper excel = new ExcelHelper(sdfFileName);
excelCreate("商品");
excelSetCellValue(1, 1, ""); //导出以后再EX中的列名···下面一样的·你要导出几个列就写几个
excelSetCellValue(1, 2, "");
excelSetCellValue(1, 3, "");
excelSetCellValue(1, 4, "");
int row_Start = 2;
foreach (DataGridViewRow row in DataGridView1Rows)
{
excelSetCellNumberFormatLocal(row_Start, 1, "@");
excelSetCellValue(row_Start, 1, rowCells["code"]Value); 在就是往里面对应的填充列名咯
excelSetCellValue(row_Start, 2, rowCells["Good"]Value);
excelSetCellValue(row_Start, 3, rowCells["name"]Value);
excelSetCellNumberFormatLocal(row_Start, 4, "@");
excelSetCellValue(row_Start, 5, rowCells["Amount"]Value);
row_Start++;
}
excelSetColumnFit();
excelSetBorder();
excelSave();
excelExit();
WaitFormServiceCurrentCloseWaitForm();
MessageBoxShow("导出成功!");
}
catch (Exception ex)
{
MessageBoxShow(exToString());
}
}
这个是导出的方法··你到时候直接建个控件然后丢控件单击事件里面
/// <summary>
/// 将Excel中的数据导入到SQL数据库中
/// </summary>
private void btnExcelout_Click(object sender, EventArgs e)
{
DataSet ds = ImportFromExcel(txtPathTextTrim());
DataTable dt = dsTables[0];
try
{
string strInsertComm;
for (int i = 0; i < dtRowsCount; i++)
{
strInsertComm = "";
strInsertComm = "Insert INTO NewUsers(LoginNum,UserName,Password,Email,UserHead,Sex,BloodType,BirthPlace,UserLevel,Education,Occupational,Contact,[Profile])";
strInsertComm += " values(";
for (int j = 1; j < dtColumnsCount; j++)
{
if (j > 1)
{
strInsertComm += ",'" + dtRows[i][j]ToString()Trim() + "'";
}
else
{
strInsertComm += "'" + dtRows[i][j]ToString()Trim() + "'";
}
}
strInsertComm += ")";
DbHelperSQLExecuteSql(strInsertComm);
}
}
catch (Exception ex)
{
MessageBoxShow(exMessage);
}
}
你可以在界面上放结果datagridview,读取excel的sheet你的数据,这是我写的一个程序的代码片段,有不懂的问我:
string str = "Provider=MicrosoftJetOLEDB40;Data Source='" + filename + "';Extended Properties='Excel 80;HDR=False;IMEX=1'";
方法一:
读取出数据后,以普通TXT文件,或者是HTML表格格式输出至TXT文档后,重新命名为xls格式
如果以纯文本格式写入的话,数据与数据之间要用制表符隔开。
优点速度快,格式控制简单,缺点,非标准EXCEL格式,可以用EXCEL打开,但是后续编辑可能出现问题 方法二:
在Winfrom程序运行的本地电脑打开EXCEL程序进行写入后关闭。
缺点,机器上要装Office 2003及以上版本,并且要在WINFORM中引用DLL组件,在机器上打开EXCEL写入会牺牲一定系统性能,需要看数据量和导出量。
优点,获得的EXCEL表格为标准文件,格式正常,后续编辑等不会出现问题。
参考代码:
机器要安装 2003或以上版本EXCEL。
引用Excel2003版DLL
Using Excel;
ExcelApplication myexcel = new ExcelApplication();//创建EXCEL APPLICATION对象
//读打开模板文件及工作表1
ExcelWorkbook myworkbook = myexcelWorkbooksAdd(SystemWindowsFormsApplicationStartupPath + @"\模板文件xls");
ExcelWorksheet mySheet = (ExcelWorksheet)myworkbookActiveSheet;
myexcelVisible = false;//设置打开的EXCEL程序是否可见
//设置指定区域格式 ,不是索引,不从零开始
ExcelRange myrange = myexcelget_Range(myexcelCells[1, 1], myexcelCells[arraycount + 5, 19]);
myrangeNumberFormatLocal = "@";//文本格式
// 将数组元素写入EXCEL
for (int i = 0; i < arraycount; i++)
{
for (int i2 = 0; i2 < lieshu; i2++)
{
myexcelCells[i + 2, i2+1] = array[i][i2]; //myexcelcells[ , ]内不是索引,指示具体单元格,从1开始
}
}
//另存到生成文件夹,蓝色为指定包含路径的文件名,filename 为文件名变量,如“123xls”
myworkbookSaveAs(SystemWindowsFormsApplicationStartupPath + @"\生成文件\" + filename, ExcelXlFileFormatxlWorkbookNormal, TypeMissing, TypeMissing, TypeMissing, TypeMissing, ExcelXlSaveAsAccessModexlExclusive, TypeMissing, TypeMissing, TypeMissing, TypeMissing);
//关闭EXCEL程序
myworkbookClose(null, null, null);
myexcelWorkbooksClose();
myexcelQuit();
SystemRuntimeInteropServicesMarshalReleaseComObject(myexcel);
SystemRuntimeInteropServicesMarshalReleaseComObject(myworkbook);
SystemRuntimeInteropServicesMarshalReleaseComObject(mySheet);
mySheet = null;
myworkbook = null;
myexcel = null;
GCCollect();
GCCollect();//2次回收,否则进程EXCEL无法关闭
方法三:
网上的一些人提供的以EXCEL格式写出文件的方法。不过有点复杂,可以网上搜索下。一般都是WEB程序用的比较多,我没有研究过。要是要求比较高的话可以自己搜索下。
综合来说,如果只是数据写出来给人看看的,可以使用方法一就行了
如果需要给别人进行后续编辑使用的,最好使用方法二。
追求完美的话,只能网上查找方法三。
虽然方法一导出的数据也可以复制粘贴到正常EXCEL中编辑,不过相对来说是麻烦了点,你自己权衡下吧。
给你一段代码,里面的查询语句等等一些东西需要换成你自己的。
/// <summary>
/// 输出数据库内容
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button28_Click(object sender, EventArgs e)
{
if (ckd == 1)
{
SaveFileDialog Save = new SaveFileDialog();
SaveFilter = "EXCEL文件(xls)|xls|所有文件()|";
if (SaveShowDialog() == DialogResultOK)
{
string filename = SaveFileName;
if (SystemIOFileExists(filename))
{
SystemIOFileDelete(filename);//如果文件存在删除文件。
}
int index = filenameLastIndexOf("\\");//获取最后一个\的索引
filename = filenameSubstring(index + 1);//获取excel名称(新建表的路径相对于SaveFileDialog的路径)
//select into 建立 新的表。
//[[Excel 80;database= excel名][sheet名] 如果是新建sheet表不能加$,如果向sheet里插入数据要加$
//sheet最多存储65535条数据。
string sql = "select top 65535 into [Excel 80;database=" + filename + "][Sheet1] from MyCNB";
//conExcelConnectionString = "Provider=MicrosoftJetOledb40;Data Source=" + ApplicationStartupPath + "\\Appdatamdb";//将数据库放到debug目录下。
OleDbCommand com = new OleDbCommand(sql, DBAcon);
DBAconOpen();
comExecuteNonQuery();
DBAconClose();
MessageBoxShow("已经成功导出为EXCEL文件!");
}
}
if(ckd==0)
{
saveFileDialog1Filter = " 文本文件(txt)|txt|所有文件()|";
if (saveFileDialog1ShowDialog() == DialogResultOK)
{
string filename = saveFileDialog1FileName;
filename = filenameRemove (filenameLastIndexOf(''));
/ if (SystemIOFileExists(filename))
{
SystemIOFileDelete(filename);//如果文件存在删除文件。
}
int index = filenameLastIndexOf("\\");//获取最后一个\的索引
filename = filenameSubstring(index + 1);//获取excel名称(新建表的路径相对于SaveFileDialog的路径)
//select into 建立 新的表。
//[[Excel 80;database= excel名][sheet名] 如果是新建sheet表不能加$,如果向sheet里插入数据要加$
//sheet最多存储65535条数据。
string sql = "select into " + filename + " from MyCNB";
//conExcelConnectionString = "Provider=MicrosoftJetOledb40;Data Source=" + ApplicationStartupPath + "\\Appdatamdb";//将数据库放到debug目录下。
OleDbCommand com = new OleDbCommand(sql, DBAcon);
DBAconOpen();
comExecuteNonQuery();
DBAconClose();
/
ExportToTxt(DataBaseAccessReadAndShowDS,filename); }
}
}
以上就是关于在winform中怎么做Excel的模板,然后再导出数据全部的内容,包括:在winform中怎么做Excel的模板,然后再导出数据、求好心人用C#winForm程序帮我做一个导入,导出Excel表,感激不尽。、winform中 想将多个控件的值导出到一张excel表中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)