在winform中怎么做Excel的模板,然后再导出数据

在winform中怎么做Excel的模板,然后再导出数据,第1张

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表中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10625184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存