Tag: exception

设置例外Excel工作簿的自定义文档属性

我正在开发一个优秀的VSTO插件,在附加组件I中构build一些工作表,以便稍后处理它们。 我想知道如果用户打开和Excel工作簿,如果工作簿与我的加载项结构或不做一些处理。 为此,我尝试使用CustomDocumentProperties。 我面临两个问题: visual studiodebugging器不评估DocumentPropertiesvariables的子项,我不能检查它们。 当我尝试通过调用DocumentProperties.Add创build一个新的DocumentPropertiy时,我得到一个ArgumentException,指出该值不在范围内。 调用函数来构造工作簿: public void InitWorkbook() { workingBook = Globals.Factory.GetVstoObject(Application.ActiveWorkbook); var dps = (DocumentProperties)workingBook.CustomDocumentProperties; if (!customDocumentPropertyExist("validctcwb", dps)) { // some sheet creation and listobject creation dps.Add("validctcwb", false); } } bool customDocumentPropertyExist(string name, DocumentProperties dps) { foreach (DocumentProperty p in dps) { if (p.Name == name) { return true; } } […]

VBA – 在工作代码中引发特定错误的exception,IsNumeric问题?

如果标题模糊,我很抱歉。 我不知道如何引用这个问题。 我有强制任何TL值的长度为“TL-”之后6个数字的长度的代码,并且在“CT-”之后用CT值执行长度为4的代码。 如果太短,则在“TL-”之后加0。 如果太长,则在“TL-”之后从右侧删除0。 TL- 0012 -> TL-000012 TL-0008981 -> TL-008981 TL – 008 -> TL-000008 findstring“TL”后,代码得到6个数字,把“TL-”放在单元格中,然后是六个数字。 我碰到了一些我没有成功修复的问题。 主要问题:如果有更多的号码存在,它将抓住所有这些号码。 其他排除故障的问题之一是如果有另一个TL值,它会抓住所有的数字,并添加它。 现在,将会看到string“TL”再次出现,并且删除它以及后面的任何内容。 我希望在其他问题上应用相同types的修复。 输出示例: Start: Output: TL-000487 #3 5/7" Cutter TL-487357 TL-000037(N123t3-01) TL-37123301 TL-000094 CTAT15123 TL-9415123 TL-000187 TL-00017 TL-000678 TL-000187 TL-000205 TL-000189 TL-000205 TL-000996:.096 REAMER TL-996096 TL-002313-(MF-4965) TL-23134965 期望的输出: Start: Output: TL-000487 #3 5/7" Cutter […]

Apache POI不能将填充的单元格格式化为数字

我正在尝试更改Apache POI中已填充单元格的CellTypes,但不断收到IllegalStateException。 问题应该可以使用POI(-ooxml) 3.16来重现。 public static void main(String[] args) throws Exception { //Setting up the workbook and the sheet XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet s = wb.createSheet(); //Setting up the CTTable XSSFTable t = s.createTable(); CTTable ctt = t.getCTTable(); ctt.setId(1); ctt.setName("CT Table Test"); ctt.setRef("A1:B2"); CTTableColumns cttcs = ctt.addNewTableColumns(); CTTableColumn cttc1 = cttcs.addNewTableColumn(); cttc1.setId(1); CTTableColumn […]

打开xls文件时例外

我有一个可以在Excel中打开的xls文件,但是当我尝试用Apache POI打开它时,出现以下exception: java.io.IOException: block[ 3 ] already removed – does your POIFS have circular or duplicate block references? at org.apache.poi.poifs.storage.BlockListImpl.remove(BlockListImpl.java:89) at org.apache.poi.poifs.storage.RawDataBlockList.remove(RawDataBlockList.java:34) at org.apache.poi.poifs.storage.BlockAllocationTableReader.fetchBlocks(BlockAllocationTableReader.java:221) at org.apache.poi.poifs.storage.BlockListImpl.fetchBlocks(BlockListImpl.java:123) at org.apache.poi.poifs.storage.RawDataBlockList.fetchBlocks(RawDataBlockList.java:34) at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:528) at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:163) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:327) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:308) at controlers.ExcelProject2.setBook(ExcelProject2.java:327) at controlers.ExcelProject2.<init>(ExcelProject2.java:149) at controlers.ExcelProject2Tests.main(ExcelProject2Tests.java:41) 问题出现在我的代码的这一部分: FileInputStream fs = new FileInputStream(pathFiles); Workbook book = new HSSFWorkbook(fs); 如果我在Excel中打开文件,“另存为”,然后用Java打开新文件,它的工作原理。 即使我打开文件并保存,而不改变任何东西,它的工作原理。 […]

C ++,OLE,Excel自动化:EAccessviolation在00000800

我正在写一个后台服务应用程序,必须自动从Excel 2003文件中读取数据。 但是无论我尝试什么,尝试从地址“00000800”读取时OlePropertyGet()方法总是会导致EAccessViolation错误。 该错误总是发生在这个代码片段的最后一行,而且似乎独立于该方法接收的参数: Variant excel, workbooks; try { excel = GetActiveOleObject("Excel.Application"); } catch(…) { excel = CreateOleObject("Excel.Application"); } workbooks = excel.OlePropertyGet("Workbooks"); 我已经做了一些广泛的谷歌search,但没有发现什么,甚至是远程有帮助的,只有这个论坛主题有人有同样的问题,但没有给出任何有关的原因或解决scheme的信息(有点有趣的是,在一个点作者提到他知道原因,但并不是说它是什么!)。 我打开任何想法是什么导致这个问题,以及如何解决这个问题,但也是Excel OLE自动化的替代方法。

运行perl代码访问xlsx表时出现编译错误

我有下面的代码: use strict; use warnings; use Text::Iconv; use Spreadsheet::XLSX; use Date::Format; my $converter = Text::Iconv -> new ("utf-8", "windows-1251"); # Read the data from a file. my $prod_otp = Spreadsheet::XLSX->new('/home/shahk/Book1.xlsx', $converter); if (!defined $prod_otp ) { die $prod_otp->error(), ".\n" ; } 但是,当我尝试运行时,我得到以下错误: Argument "#REF!" isn't numeric in int at /tools/oss/packages/Spreadsheet/XLSX/Fmt2007.pm line 94. 有人可以帮我克服这种错误吗? 谢谢!

VBA – 抛出exception,以获取更多的数字输出错误

我有强制任何CT值的长度为“CT-”之后的4个数字的长度的代码,并且在“TL-”之后以TL值执行长度为6的相同的代码。 如果太短,在“TL-”之后加0。 如果太长,则从“TL-”之后的右边删除0; CT也是一样。 我碰到的问题是,我需要抓住CT值后面的短划线后面的最大两个数字。 它只需要在该短划线之后,只抓取紧接的值或者将它们连接在一起。 我以前的问题解决“TL-”代码的问题在这里,如果这是有用的。 例: 当前输出 Start: Output: CT-0087(TC-7988) CT-0087 CT-0067-02 CT-0067 CT-0076-REV01 CT-0076 CT-0098-1 A CT-0098 期望的输出 Start: Desired Output: CT-0087(TC-7988) CT-0087 CT-0067-02 CT-0067-02 CT-0076-REV01 CT-0076-01 CT-0098-1 A CT-0098-1 所以应该总是有一个“ – ”和最多2个数字来抓取,但是我只想要抓住它,如果破折号紧随其后(对于潜在的错误:CT-0087不应该成为CT-877988,因为抓取数字或数字破折号后),我不知道如何抛出一个特殊问题的例外。 任何想法都会非常有帮助! 在代码中: 'force length of TL/CT to be 6/4 numbers long, eliminate spaces Dim str As String, ret As […]

C Sharp ExcelParser在空单元格抛出exception

所以,即时尝试使Excel文档分析器,一切顺利,直到它击中Excel中的空单元格。 然后在System.Core.dll中引发exception*“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException” namespace ExcelParser { class Program { static void Main(string[] args) { Excel.Application excelApp = new Excel.Application(); excelApp.Visible = true; string _sourceFile = "F:\\Bullshit\\book1.xlsm"; excelApp.Workbooks.Open(_sourceFile); int row = 1; Excel.Worksheet currentSheet = (Excel.Worksheet)excelApp.Workbooks[1].Worksheets[1]; Console.WriteLine("Initializing"); while (currentSheet.get_Range("A" + row).Value2 != null) { List<string> tempList = new List<string>(); for (char column = 'A'; column < 'J'; […]

build立excel文件让内存脱离例外

我需要从ado.net datatable(我通过db查询得到)出口大量的数据,以优秀。 我尝试了以下方法:1.用工作簿/工作表@服务器端创buildexcel对象…并使用内存stream将整个文档写入客户端。 但是这给了我“内存exception”。 bcoz我的记忆stream是如此巨大。 所以我用一种新的方式replace了它 – 如下所示: 将数据表中的每一行都作为一个昏迷分隔的string写到客户端。 所以,当我们得到每一行…我们可以写到客户端..没有内存使用。 但通过这种方式,我们可以写入CSV文件…不是为了… 有人知道如何处理这种情况。 我可以使用Silverlight从服务器中逐行获取数据,将它传递给客户端…在客户端生成excel。

为什么我在获得一个excel单元格时得到一个nullpointerexception?

得到一个单元格时,我得到这个exception。 这就是我正在做的事情: if(versionToAdd.equals("15.6")) { Cell X = wb.getSheetAt(0).getRow(28+j).getCell((short)7); Cell Y = wb.getSheetAt(0).getRow(28+j).getCell((short)8); X.setCellValue(x); Y.setCellValue(y); } 这个代码是在for循环(j)里面的,每次迭代一个List值时,我都会dynamic获得一个新的单元格。 问题是,每当它到达第一个col:row(H:29),我得到一个NullPointerException。 注意:在xls文件中的单元格是空白的…这可能是问题吗? 我在java中获得了一个X / Y值的集合,开始读取它,但是每当它达到一定数量的值,我在这一行中得到一个NullPointerException: Cell cellx = row.getCell(8); java列表没有问题。 如果我放置较less的X / Y对(即:5或6对),效果很好,但是超过一定的数量(比如说大于10),我就会得到这个例外。 试图寻找细胞,一切似乎都很好 编辑:感谢人们的帮助! 我开始使用POI的XSSF / HSSF。 试过以前使用它,但我不能让它正常运行,但现在我做了,它使用createRow-createCell方法完美的作品:)