Tag: c#

如果工作簿包含数据透视表,则在添加数据后无法保存Excel工作表

我们正在尝试构build一个供用户下载的默认Excel仪表板。 当下载Excel工作表时,我们希望用他们的数据填充文件中的工作表。 我们使用EPPlus来处理Excel工作表。 总之,表格的结构如下: 报表元素(透视表,数据透视图和切片器) Sheet B包含整个数据集 定义为=OFFSET(Data!$A$1;0;0;COUNTA(Data!$A:$A);COUNTA(Data!$1:$1))的命名范围只适用于我们插入的数据集的大小那张纸 无论命名范围包含我加载到电源查询并添加到工作簿数据模型 工作Sheet A所有报告元素都被configuration为从数据模型中加载数据 总的来说,只要我们手工填写Sheet B与我们的数据,这个工作很好。 当我们尝试使用EPPlus填写数据时,在尝试保存文件时出现错误: The cachesource is not a worksheet 通过试验和错误,我们已经剥去了它的部分,以隔离问题的原因。 我们怀疑它可能是切片机,使用Power Query / Data Model或者命名范围的技巧。 但是,这些看起来都不是问题 – 如果我们从工作表中删除所有数据透视表,那么我们就可以保存工作簿了。 令我感到意外的是,我们可以使用Pivot Charts,这只是造成问题的表格。 有关如何避免与EPPlus这个问题的任何build议? 现在,我们继续不使用数据透视表,我们希望他们在某个时候返回:)

我如何在C#中模拟Microsoft Excel的Solverfunction(GRG非线性)?

我有一个约束的非线性优化问题。 它可以在Microsoft Excel中使用Solver加载项解决,但是我在C#中复制它时遇到了问题。 我的问题显示在下面的电子表格中 。 我正在解决经典的A x = b问题,但要注意x的所有组件都必须是非负的。 因此,我不使用标准的线性代数,而是使用求解器的非负约束,最小化平方差的总和,并得到一个合理的解决scheme。 我试图在C#中使用Microsoft Solver Foundation或Solver SDK复制这个。 然而,我似乎无法得到任何与他们的任何地方,因为无国界医生我无法弄清楚如何定义的目标,并与Solver SDK我总是得到状态“最佳”和解决scheme的所有零,这是绝对不是本地最小。 这是我的Solver SDK代码: static double[][] A = new double[][] { new double[] { 1, 0, 0, 0, 0 }, new double[] { 0.760652602, 1, 0, 0, 0 }, new double[] { 0.373419404, 0.760537565, 1, 0, 0 }, new double[] { […]

npoi垂直alignment中心

我已经尝试了十几种方法来做到这一点,没有任何工作。 我尝试将垂直alignment应用到中心。 似乎没有任何工作。 我真的很感激一些帮助。 这是我的代码: var workbook = new HSSFWorkbook(); var sheet = workbook.CreateSheet("Zmiana " + i.ToString()); var headerRow = sheet.CreateRow(0); headerRow.CreateCell(0).SetCellValue("Data"); headerRow.CreateCell(1).SetCellValue("Maszyna"); headerRow.CreateCell(2).SetCellValue("Zmiana"); headerRow.CreateCell(3).SetCellValue("Brygadzista"); int rowNumber = 1; List<MachineStatusReport> listForOneShift = list.Where(c => c.Zmiana == i).ToList(); foreach (MachineStatusReport elements in listForOneShift) { var row = sheet.CreateRow(rowNumber++); row.CreateCell(0).SetCellValue(date.ToShortDateString()); row.CreateCell(1).SetCellValue(elements.Stanowisko); row.CreateCell(2).SetCellValue("Zmiana " + i.ToString()); row.CreateCell(3).SetCellValue(elements.Brygadzista); row.CreateCell(4).SetCellValue(elements.KodProduktu); […]

DLL函数不能在VBA环境中工作,但在Excel VBA中工作

我有以下function,包含在我写的(c + +),我在Excel中debugging的DLL,工作得很好: float _stdcall ReturnT(LPCSTR FileName) { // Extracts the generic language string from the (importing BSTR // would import kanji or whatever) and converts it into a wstring wstring str = CA2T(FileName); // Sets the string to find as _t or _T followed by 2 or 3 digits and a subsequent _ or […]

Excel 2013插件API向后兼容Excel 2003-2010?

我想知道如果我使用vs 2012为Excel 2013开发插件/插件,并且.net 4.0与最新的Excel 2013版本到2003版本的所有版本兼容。

如何使用EPPlus填充ExcelTable

我正在尝试修改现有的Excel工作表。 准确地说,我想添加几行到工作表中存在的表格(使用format作为表格创build)。 我试过了 var table = sheet.Tables["PositionsTable"]; 但是这样创build的“表”只是实际表的元数据,我不能将行添加到表中。 如果我尝试 sheet.Cells[table.Address.Address.ToString()].LoadFromCollection(positions); 然后我没有得到表的格式。 任何人都知道我如何添加行到桌子上! 谢谢

阅读asp.net核心1.0上的excel文件

你好我正尝试上传和阅读我的asp.net项目的excel文件,但所有我find的文档是ASP MVC 5.我的目标是阅读Excel表,并将值传递给对象列表。 这是我的控制器,它将file upload到我的wwwroot / uploads public class HomeController : Controller { private IHostingEnvironment _environment; public HomeController(IHostingEnvironment environment) { _environment = environment; } public IActionResult index() { return View(); } [HttpPost] public async Task<IActionResult> Index(ICollection<IFormFile> files) { var uploads = Path.Combine(_environment.WebRootPath, "uploads"); foreach (var file in files) { if (file.Length > 0) { using […]

使用C#将公式添加到Excel中 – 使公式显示

我想将公式添加到Excel工作表。 我设法使用Formula属性来做到这一点。 问题是,当我在Excel中打开工作表时,我可以看到公式工作 – 但我只能看到单元格中的结果。 我看不到在Excel顶部的公式栏中计算的公式。 显然,如果我在Excel本身中input公式,我可以在公式栏中看到单元格和公式中的结果。 我的一些代码: for (int i = 0; i < nOfColumns / 3; i++) { Range cells = workSheet.Range[workSheet.Cells[2, i * 3 + 3], workSheet.Cells[lastRowNumber, i * 3 + 3]]; cells.FormulaR1C1 = "=IF(EXACT(RC[-2],RC[-1]),TRUE,ABS(RC[-2]/RC[-1]-1))"; } 下面是一个testing代码。 即使在我保存工作簿后,FormulaHidden也是错误的,我可以成功检索到这个公式。 真的很沮丧 Microsoft.Office.Interop.Excel.Application excelApp = null; Workbooks workBooks = null; Workbook workBook = null; Worksheet […]

excel的xml窗口宽度属性

这个答案在网上很奇怪,或者我的google-fu正在生锈。 我正在从C#通过XML的Excel文件…当它加载工作表的宽度是可怜的小。 按照互联网的规定使用<ss:WindowWidth>13395</ss:WindowWidth>确实没有任何结果。 (编辑:尝试在excelworkbook和工作表选项,如果这给了任何想法的问题)尝试与无ss:添加。 另外,我似乎无法准确地find为什么每个人都使用这个价值在几万人左右。 我完全困惑。 如果有人链接一个LMGTFY回答这个我会吃我的帽子,因为我该死的没有看到它。 愚蠢的优秀。 没有人喜欢你。 只为你L.图窗windowWidth会给它的jist。

以编程方式(C#)将Excel转换为图像

我想通过编程(c#)将Excel文件转换为图像(每种格式都可以)。 目前,我正在使用Microsoft Interop Libraries&Office 2007,但默认情况下不支持保存图像。 所以我目前的解决方法如下: 使用Microsoft Interop打开Excel文件; 找出最大范围(包含数据); 使用该范围的CopyPicture(),将复制数据到剪贴板。 现在棘手的部分(和我的问题): 问题1: 使用.NET剪贴板类,我不能从剪贴板中得到正确的复制数据:数据是相同的,但不知何故格式化是扭曲的(整个文件的字体似乎变得粗体和一点点当他们不是可读的时候); 如果我使用mspaint.exe从剪贴板粘贴,粘贴的图像是正确的(就像我想要的那样)。 我反汇编mspaint.exe,并发现它正在使用(OleGetClipboard)从剪贴板中获取数据的函数,但我似乎无法得到它在C#/ .NET中的工作。 我尝试的其他事情是剪贴板WINAPI(OpenClipboard,GetClipboardData,CF_ENHMETAFILE),但结果与使用.NET版本相同。 问题2: 使用范围和CopyPicture,如果Excel表格中有任何图像,这些图像不会与周围的数据一起复制到剪贴板。 一些源代码 Excel.Application app = new Excel.Application(); app.Visible = app.ScreenUpdating = app.DisplayAlerts = false; app.CopyObjectsWithCells = true; app.CutCopyMode = Excel.XlCutCopyMode.xlCopy; app.DisplayClipboardWindow = false; try { Excel.Workbooks workbooks = null; Excel.Workbook book = null; Excel.Sheets sheets = null; […]