我有一个从用 VSTO 编写的 Excel 加载项生成的表单。我希望表单始终保留在 Excel 电子表格上方,但仍允许用户与其下方的工作表进行交互。
表单构造函数包括this.TopLevel = true;,但当我选择一个单元格时,表单仍然消失在电子表格后面。
有其他人遇到过这个问题并找到解决方法吗?
我有一个模板 excel 文件,我将数据从 SQL Server OLEDB 连接器填充到其中。该文件包含一些数据透视表,这些数据透视表引用了数据库正在填充的数据集。
目前我所做的是使用“Data!$A:$K”范围选择工作表中的所有行。这会导致数据透视表中显示空白值的问题。
我想要做的是在数据集上创建一个命名表并将数据透视表引用到它(另外我获得了命名表带来的其他一些优势)。
行数自然没有设置,所以我想找到一种方法将命名范围范围设置为仅实际值。
我为此使用 Excel Interop 和 C#,但找不到更改范围的方法。我只得到了:
oRng = oSheet.get_Range("Transactions");
Run Code Online (Sandbox Code Playgroud)
其中选择命名范围。但是如何更改属于它的单元格?
或者我应该追求更好的解决方案吗?
编辑
动态范围就是答案!
感谢@TimWilliams 的回复,我解决了这个问题:
“在模板中使用动态范围:http : //ozgrid.com/Excel/DynamicRanges.htm ”
我觉得动态范围在这里描述得更好:http : //www.contextures.com/xlpivot01.html
我遇到了一个小问题,我无法使用数据透视表中的范围,因为它要求它至少需要 2 行才能操作——模板文件只有列标题。我在第二行的第一个单元格中添加了一个随机字符串,数据透视表接受了这一点。
之后我不得不使用 c# 代码删除该行。
谢谢你们的帮助。
我已经成功地使用WPF在Excel中创建了一个图表.我可以使用以下方法将库存Excel布局应用于图表:
xlChart.ApplyLayout(i);
Run Code Online (Sandbox Code Playgroud)
其中xlChart是我的图表,'i'代表我选择的布局.
但是,我想比这更进一步,并应用我自己的自定义图表类型.我在Excel中创建了一个图表类型,并将其保存为crtx文件.我已将此作为嵌入式资源添加到我的项目中,并尝试将其应用于Excel图表,如下所示:
var file = new Uri("pack://application:,,,/Resources/Templates/line.crtx");
xlChart.ApplyChartTemplate(file.AbsoluteUri);
Run Code Online (Sandbox Code Playgroud)
然而,这失败了
HRESULT_FAIL
Run Code Online (Sandbox Code Playgroud)
我可能没有正确引用模板,所以希望那里的人能够提供帮助!
编辑:
我设法找到了解决方法.我可以将模板复制到输出目录并使用以下方法引用它:
var path = Path.GetFullPath("Resources/Templates/line.crtx");
xlChart.ApplyChartTemplate(path);
Run Code Online (Sandbox Code Playgroud)
但是,为了整洁,我宁愿将图表作为嵌入式资源.我想你不能拥有一切!
我试图阅读excel表中的评论,但无法这样做.请帮忙.提前致谢.我的代码如下 -
Excel.Application appExl;
Excel.Workbook workbook;
Excel.Worksheet NwSheet;
Excel.Range ShtRange;
appExl = new Excel.Application();
workbook = appExl.Workbooks.Open(Server.MapPath("~/" + System.Configuration.ConfigurationManager.AppSettings["ExcelFile"] + fileName), Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1);
string obj = NwSheet.Range[0].Comment.Text;
Run Code Online (Sandbox Code Playgroud) 我有一个Excel文件,在手动打开时会出错:
excel found unreadable content in *****.xlsx. Do you want to recover the content of this workbook? If you trust this workbook click yes.
如果我单击是,我可以通常的方式打开它,但如果我使用:
Excel.Application oExcelApp;
Excel.Workbook excelWorkbook = oExcelApp.Workbooks.Open(workbookPath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Run Code Online (Sandbox Code Playgroud)
我收到一个COMException:
Exception from HRESULT: 0x800A03EC
如何处理此异常.如何将其打开或显示每次手动打开时显示的错误.
我正在使用MS Office 2010.
如何使用多个工作表迭代excel工作簿,只从"C","E"和"F"列中提取数据?
这是我到目前为止的代码:
public static string ExtractData(string filePath)
{
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workBook = excelApp.Workbooks.Open(filePath);
string data = string.Empty;
int i = 0;
foreach (Excel.Worksheet sheet in workBook.Worksheets)
{
data += "******* Sheet " + i++.ToString() + " ********\n";
//foreach (Excel.Range row in sheet.UsedRange.Rows)
//{
// data += row.Range["C"].Value.ToString();
//}
foreach (Excel.Range row in sheet.UsedRange.Rows)
{
foreach (Excel.Range cell in row.Columns)
{
data += cell.Value + " ";
}
data += "\n";
}
}
excelApp.Quit();
return data;
} …Run Code Online (Sandbox Code Playgroud) 我想从 Excel 工作簿中删除一些工作表。当我的程序加载时,它读取工作簿中的工作表,将它们列在网格视图中,用户可以在其中选择输出文件中应包含的工作表。当用户点击保存按钮时,我会根据选择删除工作表并保存工作簿。所有这些都有效。除非工作表中有实际内容。这将删除空工作表,但不会删除包含内容的工作表。
foreach (var item in _view.Sheets)
{
Exc.Worksheet ws = wb.Worksheets[item.Name];
if (!item.Include)
{
ws.Delete();
}
}
Run Code Online (Sandbox Code Playgroud)
有什么线索吗?
我在 Windows 服务应用程序中使用 Microsoft.Office.Interop.Excel 引用来创建 Excel 报告。该应用程序在 DEV 机器上构建得很好,但在构建机器中它没有说“类型或命名空间名称 'Office' 在命名空间 'Microsoft' 中不存在(您是否缺少程序集引用?)”。
它在 DEV 机器上工作,因为已经安装了 MS Excel 2010。但是在构建服务器中,没有安装 MS Excel。
我的问题是,在构建服务器中安装 MS Excel 是否是构建成功所必需的,或者我可以在我的项目文件夹中复制 Microsoft.Office.Interop.Excel.dll,引用它并签入构建。目前,应用程序中添加的 dll 引用指向程序集(GAC)。
要知道的另一件事是,这些互操作 dll 不可重新分发,因为它们是 MS_Office 产品的一部分。
请建议我在这方面的正确方法。
在VS2015中添加interop.office.Excel.dll的引用后,F#(4.0,.net 4.6.1)仍然无法识别Excel.dll下的类型。
对 Excel.dll 的引用看起来像
作为比较,我创建了一个具有相同参考的 C# 项目,找到参考没有问题。
奇怪的是,如果引用 excel dll 下的工作簿对象,F# 代码确实可以编译。(我只需要将它视为动态类型)只有智能感知不起作用。
有什么建议吗?谢谢
我正在尝试使用RGB值而不是我当前的方式设置Excel单元格,因为我需要将单元格设置为特定颜色而不是设置标准颜色.
这就是我目前的做法:
ChartRange.Interior.Color = Microsoft.Office.Interop.Excel.XlRgbColor.rgbRed;
Run Code Online (Sandbox Code Playgroud)
是否可以在C#中设置RGB值的颜色?
我正在使用在VBA中通过RGB值设置颜色的Excel工作表.