Tag: c#

导出后在Excel文件中解决错误

我有一个函数将我的GridViews导出为Excel .xlsx。 但是,我面临的问题与打开/保存对话框保存的Excel文件。 当我尝试打开Excel文件时发生错误: 我目前的代码: protected void EXPORT_BUTTON_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); // creating new WorkBook within Excel application Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); String DATA1 = "DATA 1"; String DATA2 = "DATA 2"; ExportToExcel(app, workbook, DATA1 , DATA_1 ); workbook.Worksheets["Sheet1"].Delete(); workbook.Worksheets["Sheet2"].Delete(); workbook.Worksheets["Sheet3"].Delete(); ExportToExcel(app, workbook, DATA2 , DATA_2); workbook.SaveAs(@"C:\Users\testacc\Desktop\Test\" + "Server_" […]

这个技巧是否有任何缺陷通过调用Evaluate来检查表单是否存在?

我需要检查给定工作簿中是否存在具有某个特定名称的工作表。 天真的做法是这样的: using Excel = Microsoft.Office.Interop.Excel; bool ContainsSheet (Excel.Workbook workbook, string sheetName) { try { Excel.Worksheet sheet = workbook.get_Item(sheetName) as Excel.Worksheet; return sheet != null; } catch (System.Runtime.InteropServices.COMException ex) { return false; } } 但是这个例外令人讨厌。 这是浪费我的时间一次又一次,而我的程序debugging其他无关的部分。 我也想避免遍历工作簿的每个工作表,比较名称。 这在我看来是非常低效的。 经过一番研究,我做出了这个解决scheme,whis是基于这样一个事实:Evaluate()在失败而不是抛出exception时返回一个错误代码: using Excel = Microsoft.Office.Interop.Excel; bool ContainsSheet (Excel.Workbook workbook, string sheetName) { // Sadly, I need a […]

使用EPplus将多次插入相同的图像到Excel中

我想用EPplus方法多次插入相同的图像到Excel中。 我在线研究并尝试了此链接中的方法( 使用EPPlus将图像添加到Excel中 ),但在此行中收到以下错误“ 图像 集合中的名称已存在” : var picture = ws.Drawings.AddPicture(a.ToString(), repeatimage); 这是我的代码: public void ExportToExcel() { //for export ExcelPackage objExcelPackage = new ExcelPackage(); //create new workbook string[] filesindirectory = Directory.GetDirectories(Server.MapPath("~/Folder")); string repeatimagepath=@"C:\Users\user\Desktop\Project\Project1\Project1\NewProject\NewProject\Image\repeatimage.png"; Bitmap repeatimage= new Bitmap(repeatimagepath); int count = 0; int count1 = 0; int x = 25; int finalValue = 0; foreach (string […]

移动到阅读Excel文件在C#

我需要阅读.xlsx文件,而不使用第三方库。 我这样做: private void Upload(string filename) { FileStream stream = File.Open(filename, FileMode.Open, FileAccess.Read); // Reading from a OpenXml Excel file (2007 format; *.xlsx) IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //DataSet – The result of each spreadsheet will be created in the result.Tables excelReader.IsFirstRowAsColumnNames = false; DataSet result = excelReader.AsDataSet(); //5. Data Reader methods string value = GetValue(0, […]

我该如何处理“没有构造函数定义”和“types不能embedded”例外?

添加Excel 12参考(添加了Microsoft.Office.Interop.Excel和VBIDE DLLs)后,我从这里复制并粘贴代码,即: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace WindowsFormsAppExcelTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void buttonCreateExcelFile_Click(object sender, EventArgs e) { Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue […]

Gembox软件不能更改字体名称和/或字体大小

使用GemBox将现有的.xlsx excel文件填入数据并将其保存到.xlsx文件。 我遇到的问题是,当试图在Gembox网站上使用文档设置字体名称和字体大小时,我得到以下结果。 这是我如何设置字体名称 .Style.Font.Name = "Calibri"; .Style.Font.Size = 8; 可以更改任何其他样式,除非更改字体名称或字体大小我得到错误。

OLEDB连接不读取string值C#

我的要求是从本地文件夹读取一个excel文件并导入到DataTable中。 如果第一行包含string值,则导入工作正常。如果前三行中的值为int,则列的数据types变为Integer,并忽略string值。 我想读一个值。 我试图插入一行string值,但由于int数据types,它不允许。 Plz帮助..我在一个很大的麻烦。 我试图用连接stringIMEX = 1,但没有去 string Extension = ".xlsx"; string conStr = ""; switch (Extension) { case ".xls": //Excel 97-03 conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString; break; case ".xlsx": //Excel 07 conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString; break; } conStr = String.Format(conStr, strPath); oledbConn = new OleDbConnection(conStr); if (oledbConn.State != ConnectionState.Open) oledbConn.Open(); OleDbCommand cmd = new OleDbCommand(); ; […]

如何从每个单元格获取数据?

我正在为我在医院工作的朋友做一个应用程序。 该应用程序基本上只是从Excel中抓取数据,对其进行sorting并显示。 我坚持抓住所有的数据。 excel文件有3列和n行。 第一列的单元格并不总是被填充。 我已经尝试了不同的方式来获取这些数据,并且始终无法使其正常工作。 我试图包括空单元格search,但现在温度返回我所有空string。 如何迭代每一行直到结束,并在每次迭代时从每一列中获取数据,即使它是空的 – return“”? Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(currentExcelLocation, 0, true, 5, "", "", false, Excel.XlPlatform.xlWindows, "", false, true, 0, false, false, false); Excel.Sheets excelSheets = excelWorkbook.Worksheets; Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(3); int iTotalRows = excelWorksheet.UsedRange.Rows.Count; for (int i = 1; i <= iTotalRows; ++i) { […]

在通用Windows应用程序或Window Store应用程序中创buildExcel文件

我正在学习使用Visual Studio 2015开发通用的Windows 10应用程序。我想实现一个函数来创build一个Excel文件,然后在这个Excel文件中写入数据,在我的应用程序中。 我尝试在C#中添加参考Microsoft.Office.Interop.Excel。 生成错误:缺less编译器所需的成员System.Runtime.InteropServices.LCIDConversionAttributesearch此错误,并findWindowsapp store应用程序不支持Microsoft.Office.Interop.Excel。 我无法创buildExcel文件。 我不想使用任何商业库(如syncfusion)。 如何在通用Windows应用程序或Window storeApp中创buildExcel文件? 请请告诉我任何解决办法。 谢谢

我怎样才能让Excel单元格“正确的大小”到他们的内容?

我希望使用C#填充的Excel电子表格单元展开或收缩,以便在不手动调整单元格宽度的情况下显示其所有内容 – 以“恰到好处”的宽度显示数据 – 不多不less。 我试过这个: _xlSheet = (MSExcel.Excel.Worksheet)_xlSheets.Item[1]; _xlSheet.Columns.AutoFit(); _xlSheet.Rows.AutoFit(); …但它在我当前的项目中没有做任何事情(在没有范围的小POC沙盒应用程序中工作正常)。 说到范围,这个不起作用的原因可能与我创build单元格区域有关,如下所示: var rowRngMemberName = _xlSheet.Range[_xlSheet.Cells[1, 1], _xlSheet.Cells[1, 6]]; rowRngMemberName.Merge(Type.Missing); rowRngMemberName.Font.Bold = true; rowRngMemberName.Font.Italic = true; rowRngMemberName.Font.Size = 20; rowRngMemberName.Value2 = shortName; …然后添加“正常”/通用单元格值。 换句话说,我具有跨越多列的值 – 几行。 然后在下面,我回到“一格一格”的模式。 这是问题吗? 如果是的话,我该如何解决呢? 是否可以有一个电子表格的独立部分的格式(自动assembly)不受表格的其他部分的影响? UPDATE 至于获得多行来容纳一个值,我使用这个代码: private void AddDescription(String desc) { int curDescriptionBottomRow = curDescriptionTopRow + 3; var […]