我试图在填写我的 excel 文档之前添加一个空行。
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
using (XLWorkbook wb = new XLWorkbook())
{
var ws = wb.Worksheets.Add(dt, "Report");
var listOfStrings = new List<String>();
ws.Cell(1, 6).Value = "Service";
ws.Cell(1, 15).Value = "Invoice";
ws.Range("A1:L1").Style.Fill.BackgroundColor = XLColor.DarkBlue;
ws.Range("M1:Q1").Style.Fill.BackgroundColor = XLColor.DarkCandyAppleRed;
ws.Range("M2:Q2").Style.Fill.BackgroundColor = XLColor.Red;
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=Report.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我只需要将第一行留空,然后用我的数据填充文档。但我一直在覆盖文档。
这是我将图片添加到工作表的代码。我从数据库中以字节的形式获取图片。.Net Core 框架版本为 2.2.104。这是一个 API 项目。在我的语言环境中,代码运行良好。我使用 ClosedXML 组件 0.95.4 版本如下。
[HttpPost("GetTowel")]
public IActionResult GetTowel()
{
string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
string fileName = "Towel Quotation.xlsx";
try
{
using (var workbook = new XLWorkbook())
{
IXLWorksheet worksheet = workbook.Worksheets.Add("Towel Quotation");
byte[] bytes = _fileService.Get(159).FileInBytes;
System.IO.Stream x = new System.IO.MemoryStream(bytes);
//the exception is throwed at this line:
**var image = worksheet.AddPicture(x).MoveTo(worksheet.Cell("P1")).Scale(1.0);**
using (var stream = new MemoryStream())
{
workbook.SaveAs(stream);
var content = stream.ToArray();
return File(content, contentType, fileName);
}
}
}
catch (Exception ex) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 OpenXML 在导出的 Excel 工作簿中创建一个组。
我的源数据表如下所示:
Row State Product Sales
1 NY A 100
2 NY A 200
3 NY B 300
4 CA A 100
5 CA A 200
6 CA B 300
Run Code Online (Sandbox Code Playgroud)
我想按州创建一个大纲,然后按产品创建每个组的小计
我试过
ws.Outline.SummaryVLocation = XLOutlineSummaryVLocation.Top;
ws.Rows(1, 3).Group(); // Create an outline (level 2) for rows 1-4
ws.Rows(4, 6).Group();
Run Code Online (Sandbox Code Playgroud)
但它没有给我我想要的东西,而且我没有看到添加小计的选项。
我怎样才能实现这个目标?
我应该向现有 Excel 文件追加一个新行。任务由两部分组成:
这是我的代码:
private static void ExportToEXCEL(DataTable dt, string paymentStoryPath)
{
if (File.Exists(paymentStoryPath))
{
XLWorkbook currentWorkbook = new XLWorkbook(paymentStoryPath);
IXLWorksheet currentWsh = currentWorkbook.Worksheet("Payment history");
//IXLCell cellForNewData = index.Cell(index.LastRowUsed().RowNumber() + 1, 1);
IXLRow rowForNewData = currentWsh.Row(currentWsh.LastRowUsed().RowNumber()+1);
rowForNewData.InsertRowsBelow(1);
rowForNewData.Value = dt;
currentWorkbook.Save();
}
else
{
//not exist
XLWorkbook wb = new XLWorkbook();
wb.Worksheets.Add(dt, "Payment history");
wb.SaveAs(paymentStoryPath);
}
}
Run Code Online (Sandbox Code Playgroud)
我的代码出了什么问题,我应该更改什么?
我有一个excel文件。我只需要一个单元格值。我很难找到这方面的文档。在将日期写入 excel 文件之前,我已经完成了 ClosedXML,但没有在其中读取数据。
const string fileName =
@"C:\Folder1\Form.xlsx";
// Retrieve the value in cell A1.
var workbook1 = new XLWorkbook(fileName);
var ws1 = workbook1.Worksheet(1);
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
我正在使用 ClosedXML 为 Excel 中的人员制作报告。我有 3 个问题需要帮助。
1)我这里有这段代码,这样我就可以访问工作簿中的数据。除非有人打开该工作簿,否则它可以正常工作。如果可能的话,我不在乎它是否打开只读副本,因为我所做的只是从中访问信息。
var WorkbookCopyFrom = new XLWorkbook(WorksheetToCopy);
Run Code Online (Sandbox Code Playgroud)
即使有人打开了,我怎样才能打开它?
2)在我之前的公司,我使用Office Interop Nuget包来做类似的事情。在该包中,我能够在使用以下代码处理 Excel 文件时显示该文件:
excelApp.Visible = true;
Run Code Online (Sandbox Code Playgroud)
ClosedXML 中有类似的东西吗?
我正在使用 closedxml 从 .NET c# 应用程序生成和下载 xlsx 文件
有没有办法显示公式输出数字,而无需用户在下载并在 excel 中打开文件后单击“启用编辑”?
string TablePath = Storage.ProjectPath + "\\Tables\\";
string ObjectRepPath = TablePath + "ObjectRepository.xlsx";
string locType = " ";
string locParm = " ";
var workbook = new XLWorkbook(ObjectRepPath);
var ws1 = workbook.Worksheet(1).RangeUsed().RowsUsed().Skip(1);
var totalRows = ws1.Count();
var row = ws1.Row;
for (int rCnt = 1; rCnt <= totalRows; rCnt++)
{
var objPage = ws1.Cell(rCnt, 0).Value;
var objElement = ws1.Cell(rCnt, 1).Value;
if (objPage == page && objElement == element)
{
locType = ws1.Cell(rCnt, 2);
locParm = ws1.Cell(rCnt, 3);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 ClosedXML …
我正在使用 closedXMl 将数据从 excel 检索到我的 C# WPF 中。我正在使用该Range()功能手动选择数据检索范围。
如何获取单元格中的值并将它们存储到列表中?有没有办法解决这个问题?下面是我创建的用于检索和存储 excel 数据的方法示例。
public List<double> TableList = new List<double>();
public void test()
{
using (var excelWorkbook = new XLWorkbook(@"D:\OneDrive ExcelFile.xlsx"))
{
var Ws = excelWorkbook.Worksheet("Sheet1");
var TableList = Ws.Range("O18:O31");
}
for (int i = 0; i < TableList.Count; i++)
{
Console.WriteLine("{0}", TableList[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是 Sheet1!O18:O31
我正在使用 closeXml 将数据导出到 Excel。但我的列需要根据内容进行调整,因此我尝试手动指定列宽度:
var ws = workbook.Worksheets.Add("Column Settings");
col.Width = 50;
Run Code Online (Sandbox Code Playgroud)
不适合我。我也尝试过:
Columns().AdjustToContents();
Run Code Online (Sandbox Code Playgroud)
但也没有结果。因此,寻找一种解决方案来预先设置整个工作表或工作簿中的单元格宽度。这是我的代码:
//variables
XLWorkbook workbook = new XLWorkbook();
var wsDep = workbook.Worksheets.Add("MBR");
wsDep.Columns().AdjustToContents();
DataTable dt = new DataTable() { TableName = "MBR" };
DataSet ds = new DataSet();
TagRepo tr = new TagRepo();
List<string> tags = new List<string>();
tags.Add("TimeStamp");
//list min,max,avg.
foreach (var item in tr.getAllTagNames())
{
tags.Add(item.Trim()+"_Min");
tags.Add(item.Trim() + "_Max");
tags.Add(item.Trim() + "_Avg");
}
//input data
int l = tags.Count();
//Colum names
string[] columns = new …Run Code Online (Sandbox Code Playgroud)