所有
如何下载文件以便用户看到它正在下载(如使用流?)
我目前正在使用ClosedXML,但如果我使用SaveAs方法,我必须提供一个硬编码的URL,如果我只是给它文件名,它不会自动下载到下载文件夹.
下面的方法效果很好,但我必须创建自己的excel文件,该文件基于HTML,并且文件增长得太大,当我使用ClosedXML时,文件的大小只有50%或更少.代码如下:但是,下载行为是我希望它的样子.
有没有办法可以转换下面的代码,所以我可以把我的'工作簿'作为一个对象,它只是下载这个工作簿?
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset ="UTF-8";
HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";
ctl.Page.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
Run Code Online (Sandbox Code Playgroud)
谢谢
我的Excel文件不在表格数据中.我试图从excel文件中读取.我的excel文件中的部分是表格式的.
我需要遍历第3到第20行,这些是表格并读取数据.
这是我的代码派对:
string fileName = "C:\\Folder1\\Prev.xlsx";
var workbook = new XLWorkbook(fileName);
var ws1 = workbook.Worksheet(1);
Run Code Online (Sandbox Code Playgroud)
如何循环第3到第20行并读取第3,4,6,7,8列?此外,如果一行为空,我如何确定,以便我可以跳过它而不读取每列具有给定行的值.
我用文本创建单元格.之后我设置了WrapText属性和列宽.
var cell = worksheet.Cell("A1");
cell.Style.Alignment.WrapText = true;
cell.SetValue("This is very long text");
worksheet.Column(1).Width = 10;
worksheet.Rows().AdjustToContents();
Run Code Online (Sandbox Code Playgroud)
文本已被单词移动,但行高不会更改.如何调整行高到单元格内容?
我需要安装 ClosedXML 依赖项来使用 .net Framework 4.7.2 构建 C# 项目,但在尝试安装时总是收到相同的错误:“无法解析依赖项 'SixLabors.Fonts'。使用的来源:'nuget.org', ' Microsoft Visual Studio 离线包'"
我已尝试从 nuget 包管理器安装的所有内容
有哪些库可以扩展OpenXML(或者为OpenXML添加一种抽象层),类似于ClosedXML?
我正在寻找至少1.0版本的商业或免费软件工具.
先感谢您.
我正在尝试将一些数据导出到excel表,S1
其数据将在接下来的两个表中显示为Pivoted视图S2 and S3
.我能够创建一个单一的枢轴,它完美无缺.但是当我创建两个枢轴时,后续的Excel文件呈现为损坏.
腐败我的意思是,
点击是,我得到了 -
这是我用来创建枢轴的代码 -
using XL = ClosedXML.Excel;
...
XL.XLWorkbook wb = new XL.XLWorkbook();
dsData = Session["ExportData"] as DataSet;
var sheet1 = wb.Worksheets.Add("output table");
sheet1.Cell(1, 1).InsertTable(dsData.Tables[0], "output table", true);
// sheet1 is the reference sheet S1
var dataRange = sheet1.RangeUsed();
// First Pivot
XL.IXLWorksheet ptSheet1 = wb.Worksheets.Add("S2");
var pt1 = ptSheet1.PivotTables.AddNew("PivotTable1", ptSheet.Cell(3, 1), dataRange);
pt1.ReportFilters.Add("CX");
pt1.RowLabels.Add("C1");
pt1.RowLabels.Add("C2");
pt1.RowLabels.Add("C3");
pt1.RowLabels.Add("C4");
pt1.ColumnLabels.Add("CL1");
pt1.ColumnLabels.Add("CL2");
pt1.ColumnLabels.Add("CL3");
pt1.Values.Add("V").SummaryFormula = XL.XLPivotSummary.Sum;
// Second Pivot
XL.IXLWorksheet ptSheet2 = wb.Worksheets.Add("S3"); …
Run Code Online (Sandbox Code Playgroud) 这看起来很愚蠢,但是我无法以#/####
格式化字符串的形式获取我的值,而不是将其格式化为excel中的日期.
我正在使用ClosedXML写入excel,并使用以下内容:
// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).DataType = XLCellValues.Text;
tableRow.Cell(1).Value = "2/1997";
// snip
Run Code Online (Sandbox Code Playgroud)
查看输出excel表我进入单元格2/1/1997
- 即使我在代码中将格式设置为文本,我在excel表中将其作为"日期" - 我通过右键单击单元格检查了这一格式,格式单元格,将"日期"视为格式.
如果我改变了:
// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).Value = "2/1997";
tableRow.Cell(1).DataType = XLCellValues.Text;
// snip
Run Code Online (Sandbox Code Playgroud)
我改为35462
输出.
我只想让我的文字值2/1997
显示在工作表上.请告知如何纠正.
在Net 4.5.1上使用最新的Closed XML(0.76)
使用表创建一个工作表:
DataTable Table = ...
var DataWorkSheet = Workbook.Worksheets.Any(x => x.Name == "Data") ?
Workbook
.Worksheets
.First(x => x.Name == "Data") :
Workbook
.Worksheets
.Add("Data");
int Start = ... // calculate cell start
var Source = DataWorkSheet
.Cell(Start, 1)
.InsertTable(Table, Name, true);
var Range = Source.DataRange;
Run Code Online (Sandbox Code Playgroud)
这是在循环内完成的(即"数据"表中的多个表).如果在单独的工作表中创建多个数据透视表,则无法打开生成的Excel文档时出现问题.
var PivotWorkSheet = Workbook
.Worksheets
.Add(Name);
var Pivot = PivotWorkSheet
.PivotTables
.AddNew(Name, PivotWorkSheet.Cell(1, 1), DataRange);
Run Code Online (Sandbox Code Playgroud)
任何想法为什么以及如何调试?
我在closedXML库中面临一个奇怪的问题.
我正在使用closedXML库将数据表导出到.xlsx(excel文件).默认情况下,库中启用了自动过滤器.
我想禁用或删除自动过滤器并仅导出数据表.
这是我尝试过的代码,但它不起作用
XLWorkbook wb = new XLWorkbook();
var ws = wb.Worksheets.Add("Test");
ws.Cell(1, 1).InsertTable(dataTable);
ws.AutoFilter.Enabled = false;
ws.Columns().AdjustToContents();
wb.SaveAs("Report.xlsx");
Run Code Online (Sandbox Code Playgroud)
而且我也试过了
ws.AutoFilter.Clear();
Run Code Online (Sandbox Code Playgroud)
即使是柱式透明过滤器也不起作用
ws.AutoFilter.Column(1).Clear();
Run Code Online (Sandbox Code Playgroud) excel文件中有几个文本框作为ActiveX对象,我想从代码隐藏中访问它们.
我在其他领域使用ClosedXML,但我愿意接受其他建议.