C#或.net中用NPIO要怎样才能导出2007以上的Excel(.xlsx)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#或.net中用NPIO要怎样才能导出2007以上的Excel(.xlsx)?相关的知识,希望对你有一定的参考价值。
我用来导出xls就可以,不过xls最多只有6万多行,不能满足我的要求。求高手指导啊
参考技术A public static void DownData(DataView dvData, string fileName)StringBuilder strBd = new StringBuilder(EXCELhtmlHEAD + "<table x:str><tr>");
int cols = dvData.Table.Columns.Count;
for (int j = 0; j < cols; j++)
strBd.Append("<td>" + dvData.Table.Columns[j].Caption + "</td>");
strBd.Append("</tr>");
for (int i = 0; i < dvData.Count; i++)
strBd.Append("<tr>");
for (int j = 0; j < cols; j++)
strBd.Append("<td>" + Lixiang.Common.HtmlToTxt(Convert.ToString(dvData[i][j])) + "</td>");
strBd.Append("</tr>");
strBd.Append("</table></body></html>");
DownData(strBd.ToString(), fileName);
public const string EXCELHTMLHEAD = @"<html xmlns:o='urn:schemas-microsoft-com:office:office'
xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>
<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
<x:Name>ExportData</x:Name><x:WorksheetOptions><x:Selected/></x:WorksheetOptions>
</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
</head><body>"; 参考技术B 好像NPOI不支持导出2007及更高版本的格式
可以考虑用EPPLUS
参考下面的博客:
http://blog.csdn.net/accountwcx/article/details/8144970本回答被提问者采纳
怎样将C#生成的数据导出
我不是专业学计算机的,咱就学过C#基础。
但是必须要用C#做作业。
做了之后要检查结果是否正确。但是上万个数据。。。望天。
我总不能手动把C#得到的一个上万行的2维数组手动抄下来吧。
所以需要把数据导出然后用其他数学软件检验结果的正确性。
请问如何将一个C#程序做出来的一个2维数组输出到其他文件(比如excel, txt等格式的文件)
上网查了好多,好复杂啊,咱就大学里这个学期学了2月的C#,实在搞不来。
希望各位高手指点啊,简简单单的让它们排着队出来就成啦~
谢~~
/// <summary>
/// 将超链接、下拉框等样式去掉
/// </summary>
/// <param name="gv"></param>
private void DisableControls(Control gv)
Literal l = new Literal();
string name = String.Empty;
for (int i = 0; i < gv.Controls.Count; i++)
if (gv.Controls[i].GetType() == typeof(LinkButton))
l.Text = (gv.Controls[i] as LinkButton).Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
else if (gv.Controls[i].GetType() == typeof(DropDownList))
l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
else if (gv.Controls[i].GetType() == typeof(HyperLink))
l.Text = (gv.Controls[i] as HyperLink).Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
if (gv.Controls[i].HasControls())
DisableControls(gv.Controls[i]);
/// <summary>
/// 将GridView中的内容导出成Excel文件
/// 如文件名为空,则使用规则生成文件默认
/// </summary>
/// <param name="FileName">扩展名必须为xls,而不能是xlsx,否则不能直接在Excel中打开</param>
public void ToExcel(string FileName)
if (string.IsNullOrEmpty(FileName))
string filename = DateTime.Now.Ticks.ToString() + ".xls";
FileName = this.Parent.Page.Server.MapPath("~/Temp/" + filename);
//去除分页、排序
this.AllowPaging = false;
this.AllowSorting = false;
this.AutoDataBind();
//生成html
this.DisableControls(this);
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName);
this.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
this.RenderControl(hw);
string str = tw.ToString();
str = (Regex.Replace(str, @"(<a(.|\s)*?>)|</a>", "", RegexOptions.IgnoreCase));
HttpContext.Current.Response.Write(str);
HttpContext.Current.Response.End();
//还原分页、排序
this.AllowPaging = true;
this.AllowSorting = true;
this.AutoDataBind();
#endregion 参考技术A 以下代码以CSV格式保存,以逗号分隔方式保存数据,保留数组的原模原样,可以使用记事本或者Excel直接打开。
int[][] array = new int[] 1, 2, 3 , new int[] 4, 5, 6 , new int[] 7, 8, 9 ;
OpenFileDialog openFile = new OpenFileDialog();
openFile.Multiselect = false;
openFile.Filter = "CSV files (*.csv)|*.csv|Text files (*.txt)|*.txt|All files (*.*)|*.*";
if (openFile.ShowDialog() == DialogResult.OK)
string str = "";
StreamWriter writer = new StreamWriter(openFile.FileName, false, Encoding.Default);
for (int i = 0; i < array.Length; i++)
for (int j = 0; j < array[i].Length; j++)
str += array[i][j] + ",";
str = str.TrimEnd(',');
writer.WriteLine(str);
str = "";
writer.Close();
参考技术B 先用数组的sort()函数排序,然后
int[] aarray = new int[10000];
string input = "";
foreach (int a in aarray)
input += a + "\r\n";
//写入文本
StreamWriter sw = new StreamWriter(pathname);
sw.Write(input);
sw.Close();本回答被提问者采纳
以上是关于C#或.net中用NPIO要怎样才能导出2007以上的Excel(.xlsx)?的主要内容,如果未能解决你的问题,请参考以下文章
C# NPOI导出Excel和EPPlus导出Excel比较
C#中用DateTime取出日期时间.日期不能为0,怎样判断